DFS實現全排列

2022-03-17 10:03:36 字數 684 閱讀 6779

dfs遞迴寫全排列是真的讓我頭大,看了好長時間!總結一下吧,免得忘記!

寫法一:

#include#include

#include

using

namespace

std;

int vis[10];//

用於標記是否被訪問過,0--未訪問 1--已訪問

int ans[10];//

用於儲存答案

intn;

void dfs(int

step)

}vis[i] = 0; //

訪問完畢返回標記為可訪問

//只有當輸出了乙個結果後才有可能執行

} }

}int

main()

return0;

}

寫法二:

#includeusing

namespace

std;

intn;

intstep;

int vis[105

];int a[105

];void dfs(int

step)}}

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

}}int

main()

return0;

}

全排列 DFS搜尋

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。...

DFS之全排列

c 實現 includeusing namespace std using std cout using std cin int n 3 int seat 3 三個位置,所放的數字先全部用0初始化 int mark 3 分別標記0,1,2三個陣列是否放置在了位置上,如已經放置值用1表示,沒放置用0。...

dfs全排列問題

全排列問題,不是計算全排列a,是把全排列列印出來,這也是dfs的一道入門題目,值得學習。問題 a 遞迴入門 全排列 題目描述 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 輸入...