5972 Problem A 遞迴入門 全排列

2021-09-02 08:14:58 字數 896 閱讀 9572

排列與組合是常用的數學方法。 

先給乙個正整數 ( 1 < = n < = 10 ) 

例如n=3,所有組合,並且按字典序輸出: 

1 2 3 

1 3 2 

2 1 3 

2 3 1 

3 1 2 

3 2 1 

輸入乙個整數n(  1<=n<=10)

輸出所有全排列

每個全排列一行,相鄰兩個數用空格隔開(最後乙個數後面沒有空格)

3
1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

#includeusing namespace std;

int n, a[100];

bool flag[100] = ;

void dfs(int num)

cout << a[n - 1] << endl;

return;

} //遞迴核心:從低到高選中尚未選中的數

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

int main()

return 0;

}/*

stl algorithm中函式next_permutation生成全排列:

#include#include#includeusing namespace std;

int main()

doprintf("%d\n", a[n - 1]);

} while (next_permutation(a, a + n));

} return 0;

}*/

Problem A 遞迴入門 全排列

description 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 input 輸入乙個整數n 1 n 10 output 輸出所有全排列 每個全排列一行,相鄰兩個數用空格隔...

遞迴入門自學

例題 計算給定的n個數的和 分析 顯然當n 0的a 0 為所求,因此可以將前n項可以看做是前n 1 即 a 0,n 2 項的和加上第n項 int sum int a,int n 如上演算法中的sum 在進行遞迴呼叫的時對自身的呼叫最多隻會進行一次,也就是在每一層次上至多只有乙個例項,且構成乙個線性結...

《遞迴入門》之回文

所謂回文字串,就是乙個字串,從左到右讀和從右到左讀是完全一樣的。比如 level aaabbaaa 題目 判斷乙個字串是否為回文 解法 遞迴 遞迴的作用在於把問題的規模不斷縮少,直到問題縮少到能簡單地解決 問 如何縮少問題規模?答 通過觀察可以知道,乙個回文字串其中內部也是回文。所以,我們只需要以去...