時間限制: 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之間。其中的一些廁所之間有屎連線。...