八中 7數碼

2021-08-13 23:15:35 字數 1246 閱讀 5843

時間限制: 1 sec

記憶體限制: 128 mb

注:有需要的同學可以看看八數碼問題,或許,會有更大的驚喜。

有乙個4*2的方框,裡面隨機填充著0-7這8個數。每次可以交換0和它相鄰的格仔裡的數。比如:

可以變換為:

也可以變換為:

最終希望8個數整齊地排列為:

給出t組初始狀態,求出每種狀態移動到目標狀態的最少步數。

第1行:1個整數t(1<=t<=10000)

接下來t行,每行乙個數字串,表示初始狀態

輸出t行,每行1個整數,表示每個初始狀態對應的最少移動步數。

3

0 1 2 3 4 5 6 7

1 0 2 3 4 5 6 7

7 6 5 4 3 2 1 0

0

128

其實,這道題並不是很難(真的嗎?),它和八數碼的問題是差不多的,也就是乙個搜尋+康拓展開式。但需要注意的是,此題可以先在輸入之前就進行計算,將走到每乙個點的最少步數算出(從01234567的順序開始廣搜),所以就可以在後面的時候邊輸入邊輸出。好啦,至於其餘重點的,將在**中標出。

#include

#include

#include

using

namespace

std;

int fac=;//階層

struct nodefirst,q;

void swap(int &a,int &b)

int vis[40325];

int ct(node x)

queue

que;

int main()

}else

if(w0>4)

}q=first;q.t=first.t+1;

if( w0 != 0 && w0 != 4 )

}q=first;q.t=first.t+1;

if( w0 != 3 && w0 != 7 )

} }while(!que.empty());//只要佇列不為空,就一直執行計算

int t;

scanf("%d",&t);//輸入資料

for(int i=1;i<=t;i++)

}

八中測試 優化延遲

小ho編寫了乙個處理資料報的程式。程式的輸入是乙個包含n個資料報的序列。每個資料報根據其重要程度不同,具有不同的 延遲懲罰值 序列中的第i個資料報的 延遲懲罰值 是pi。如果n個資料報按照 pi1,pi2,pin 的順序被處理,那麼總延遲懲罰 sp 1 pi1 2 pi2 3 pi3 n pin 其...

八中足球賽

八中足球賽 description 八中在辦一次足球錦標賽,有n個隊伍參加,每個隊的編號為1到n中某個值。每個隊有個特徵值為1 2 30 1之間的整數,且各不相同 比賽在決出冠軍後就結束了 小z發現每次比賽的興奮值為兩個隊特徵值的異或值 異或可理解為不進製的二進位制加法運算 例如特徵值為2與特徵值為...

Problem 八中的廁所

problem 八中的廁所 time limit 1 sec memory limit 128 mb submit 468 solved 257 submit status web board 平面上有n個廁所 n 100 每個廁所的座標均在 10000 10000之間。其中的一些廁所之間有屎連線。...