sicily 1153 馬的周遊問題

2021-07-05 21:19:21 字數 1980 閱讀 7350

time limit: 1 secs, memory limit: 32 mb , special judge

和題目c同樣的任務,這裡只是把棋盤擴大到標準的西洋棋。對這樣乙個8 * 8的棋盤用同樣的方法編號如下:

1     2     3       4     5     6       7     8

9     10       11    12       13    14       15    16

17    18       19    20       21    22       23    24

25    26       27    28       29    30       31    32

33    34       35    36       37    38       39    40

41    42       43    44       45    46       47    48

49    50       51    52       53    54       55    56

57    58       59    60       61    62       63    64

輸入有若干行。每行乙個整數n(1<=n<=64),表示馬的起點。最後一行用-1表示結束,不用處理。

對輸入的每乙個起點,求一條周遊線路。對應地輸出一行,有64個整數,從起點開始按順序給出馬每次經過的棋盤方格的編號。相鄰的數字用乙個空格分開。

4
-1
注意:如果起點和輸入給定的不同,重複多次經過同一方格或者有的方格沒有被經過,都會被認為是錯誤的。

深度優先搜尋實現回溯,注意由於資料量比較大,需要進行剪枝。剪枝的方式很有意思,當前下一跳必須對八個方向進行判斷,然後按照各個方向的再下一跳的次數從小到大進行排序,意思就是先搜尋較少下一跳的方向。從狀態空間樹的形狀來看,就是先搜尋子樹比較小的方向,從而避免在大量樹路徑中尋找乙個的花銷。具體**如下:

#include #include #include #include #include using namespace std;

//board陣列記錄是否已經走過,走過標記為 1

int board[10][10];

int movex[8] = ;

int movey[8] = ;

int path[65];

//構造結構體點

struct point

; //判斷能否成為下乙個擴充套件點

bool check(point n)

//自定義比較函式用於比較下乙個擴充套件點

bool cmp(point a,point b)

}sort(v.begin(),v.end(), cmp);

//遞迴向下搜尋

for(int i=0; i>n && n!=-1)

//system("pause");

return 0;

}

#include #include #include #include #include using namespace std;

//board陣列記錄是否已經走過,走過標記為 1

int board[10][10];

int movex[8] = ;

int movey[8] = ;

int path[65];

//構造結構體點

struct point

; //判斷能否成為下乙個擴充套件點

bool check(point n)

//自定義比較函式用於比較下乙個擴充套件點

bool cmp(point a,point b)

// system("pause");

return 0;

}

11 5執行緒終止

如果程序中的任一線程呼叫了exit,exit 或者 exti,那麼整個程序會終止。類似的,當預設動作是終止程序,傳送到執行緒的訊號會終止整個程序。在12.8節中我們會討論更多執行緒和訊號間的互動與通訊 乙個單執行緒有三種退出方式,在不終止整個程序的情況下,終止執行緒的控制流。1.執行緒從啟動例程中返...

1 15 考試總結

題目鏈結 題意 給定乙個無向有權圖,通過一條邊的時間為邊權,每過去一單位時間,每乙個點都會積累 q 公釐雪,初始雪厚 h 雪積累到 l 以上就不能行走 起點,終點不算 求出 s 到 t 的最短時間.有限制條件的最短路,只需在跑 dijkstra 或 spfa 的時候稍微判斷一下即可.include ...

Sicily 全排序輸出

輸入乙個數字n,輸出從1 n 1 n 10 組成的數字的全排列,每個排列佔一行,輸出按照數值公升序排列 比如輸入3,則輸出是 123132 213231 312321 遞迴演算法。這位大神 include includeusing namespace std void permutation str...