104.全排列(深搜)搜索与回溯
生活随笔
收集整理的這篇文章主要介紹了
104.全排列(深搜)搜索与回溯
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1294 全排列
?
時(shí)間限制: 1 s 空間限制: 128000 KB 題目等級(jí) : 黃金 Gold 題解 查看運(yùn)行結(jié)果 題目描述?Description給出一個(gè)n, 請(qǐng)輸出n的所有全排列
輸入描述?Input Description讀入僅一個(gè)整數(shù)n?? (1<=n<=10)
輸出描述?Output Description一共n!行,每行n個(gè)用空格隔開(kāi)的數(shù),表示n的一個(gè)全排列。并且按全排列的字典序輸出。
樣例輸入?Sample Input3
樣例輸出?Sample Output1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
數(shù)據(jù)范圍及提示?Data Size & Hint分類標(biāo)簽?Tags?點(diǎn)此展開(kāi)?
搜索 代碼: #include< cstdio > #include< iostream > using namespace std; int n,visit[11]; int a[11]; void dfs(int b) { if(b==n+1) { for(int i=1;i<=n;++i) printf("%d ",a[i]);//注意一定要把當(dāng)前取得的點(diǎn)放到一個(gè)數(shù)組中去,到了最后時(shí)把數(shù)組輸出,否則如果是深搜的時(shí)候,每找到一個(gè)就輸出,會(huì)使輸出的數(shù)據(jù)不全*/? printf("\n"); return ; } for(int i=1;i<=n;++i) { if(!visit[i]) { visit[i]=1;//標(biāo)志設(shè)為這個(gè)i已經(jīng)在排列中了 a[b]=i; dfs(b+1); visit[i]=0;//回溯 a[b]=0; } } } int main() { scanf("%d",&n); int b=1; for(int i=1;i<=n;++i) { if(!visit[i]) { visit[i]=1; a[1]=i; dfs(b+1); visit[i]=0; a[1]=0; } } return 0; }?轉(zhuǎn)載于:https://www.cnblogs.com/c1299401227/p/5370719.html
總結(jié)
以上是生活随笔為你收集整理的104.全排列(深搜)搜索与回溯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 财付通被盗刷怎么办 冻结账户还会被盗刷
- 下一篇: core Bluetooth(蓝牙4.0