已知矩陣 a,矩陣 2 行 4 列
|1 2 3 4|
|8 7 6 5|
矩陣的狀態可以用序列 12345678 來表示。即從左上角開始,按順時針方向依次寫下每個數字。對於這個矩陣,我們可以有 3 種不同的操作,具體如下:
a:互相交換上下兩行,如上例可變換為狀態87654321;
b:兩行分別迴圈右移一位,如上例可變換為狀態41236785;
c:中間 個元素同時順時針旋轉一位,如上例可變換為狀態17245368 。
現在已知矩陣的初始狀態與目標狀態,現在請問聰明的你,最小需要多少步變換,如果有多種方案則輸出字典序最小的方案。
輸入格式
輸入有兩行。第一行輸入乙個狀態,表示初始狀態,第二行輸入乙個狀態,表示目標狀態。兩個狀態長度均為 8,均由 1到 8 這 8 個數字組成,且沒有重複數字。
輸出格式
輸出一行,輸出變換的順序。每一步變換,輸出對應的編號。
樣例輸入
12345678
87654321
樣例輸出
a
#include
#include
#include
#include
using namespace std;
bool visited[87654350];
int en;
struct zhuangtai;
zhuangtai st;
zhuangtai a(zhuangtai z)
zhuangtai b(zhuangtai z)
zhuangtai c(zhuangtai z)
void bfs()
visited[tmp.data] = 1;
q.push(tmp);
}tmp=b(n);
if(!visited[tmp.data])
visited[tmp.data] = 1;
q.push(tmp);
}tmp=c(n);
if(!visited[tmp.data])
visited[tmp.data] = 1;
q.push(tmp);}}
return;
}int main()
計蒜客習題 朋友
在社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。現在,已知若干對朋友關係,詢問某兩個人是不是朋友。請編寫乙個程式來解決這個問題吧。輸入格式 第一行 三個整數 n,m,p n ...
計蒜客習題 逃跑
一位博主寫了ac 但是無論是廣度bfs還是深度dfs,都會報錯,dfs是執行超時,bfs是答案錯誤。傳送門 另一位博主使用了dfs 有興趣可以看下,沒有檢驗是否正確,傳送門 根據前位博主的bfs 做了幾項修改,然後用自己的 找錯前位博主,發現找不出來,有興趣的小夥伴可以試下,找一下前位博主的錯誤。當...
計蒜客 矩陣翻轉
曉萌最近在做乙個翻轉的應用,你可能也知道,其實是由乙個個的點組成的。於是,曉萌想先做乙個可以翻轉矩陣的程式,來解決他問題的核心部分。輸入第一行包括由空格分開的整數 m,n,t 0m,n,t 0m 20 0 tt t的值為 000 或 11 1。其中 mmm 和 nn n分別表示待處理矩陣的行數與列數...