計蒜客習題 矩陣變換

2021-08-21 08:13:46 字數 1264 閱讀 1865

已知矩陣 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分別表示待處理矩陣的行數與列數...