HDU 2181哈密頓繞行世界(DFS)

2021-09-29 12:32:08 字數 576 閱讀 6989

題解:

用乙個二維陣列 way[i][3] 儲存i點能到達所有 地方,然後在dfs的擴充套件地方就去遍歷 後面那個3就好了

**:

#include

using

namespace std;

int way[22]

[5];

//儲存路徑

int vis[22]

;//標記陣列

int path[

100]

;//記錄路徑

int m,k;

void

dfs(

int now_city,

int cnt)

cout<

for(

int i=

0;i<

3;i++)if

(!vis[next_city])}

}int

main()

while

(cin>>m)

return0;

}

HDU 2181 哈密頓繞行世界問題

用dfs字典序搜尋即可,搜到末尾時回到原來的位置就是一條路徑,可以加乙個小剪枝,如果搜尋中經過了起始位置,可以剪枝 我把路徑打表儲存在陣列裡,防止有過多的重複輸入 include include include include includeusing namespace std const int...

HDU 2181 哈密頓繞行世界問題

由於資料量其實很小,直接dfs即可,細節見注釋 include include includeusing namespace std bool vis 21 int adj 21 3 cnt,tpath 20 start void dfs int k,int level return vis k 1...

HDU 2181 哈密頓繞行世界問題

解題思路 dfs遍歷出所有的路徑,遍歷過程中用記錄當前點的字首,每次搜到一條道路直接遞迴輸出即可 ac include include include include using namespace std const int maxn 21 int pre maxn bool vis maxn i...