1005 全排列問題(dfs的另乙個用法)

2021-09-14 03:30:07 字數 839 閱讀 6325

題目:1005: 全排列問題

description

輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。

input

包含多組測試資料,每組測試資料報含乙個正整數n(1≤n≤9)。

output

由1~n組成的所有不重複的數字序列,每行乙個序列。

sample input

3sample output

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

思路:建立函式時傳乙個n用來進行計算其迴圈到次數,即全排已經排好的或者說還可以排的次數;

然後每次迴圈從1到n找,但要有乙個標記陣列用來標記哪乙個是已經被選中了,如果沒有選中說明可以繼續選,選中過了的,則跳過去找其他的,每次選中的都存到乙個陣列中,如果之後直接輸出這個陣列(這個方法告訴我們了,對於輸出乙個序列的問題時,如果其中序列的元素不是同時得到的時候,則可以通過存入到乙個陣列中,然後輸出陣列的操作);別忘了,每次結束乙個序列的輸出後,再依次退出遞迴的時候要緊接著將上乙個使用的數值給再標記為沒有被選中;這樣才能進行其他的;

**:

#include#includevoid dfs(int );

int queue_number[10];

int tag[9]=;

int n;

int main()

return 0;

}void dfs(int t)

return;

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

}}

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 輸入...

DFS全排列問題

題目描述 今天,桐桐的老師布置了一道數學作業,要求列出所有從數字1到數字n的連續自然數的排列,要求所產生的任一數字序列中不允許出現重複的數字。因為排列數很多,桐桐害怕寫漏了,所以她決定用計算機程式設計來解決。輸入只有乙個整數n 1 n 9 輸出按字典序輸出由1 n組成的所有不重複的數字序列,每行乙個...

dfs解決全排列問題

給定乙個n 0該問題相當於找出從某點到目的點的所有路徑問題,於是想到用dfs深度優先演算法,找到一條路徑即可直接輸出,直到找到所有的路徑。思路大致是,先放置乙個數,然後在沒有放置過的數字當中選擇乙個放在下乙個位置,依次進行,那我們發現,其實在選擇放置下乙個數字時,和解決之前的問題是一樣的 還是要在沒...