遞迴演算法之全排列問題

2021-06-07 21:35:04 字數 622 閱讀 9805

/*

2、數字全排列(numlist.pas/in/out)

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

輸入乙個整數n(1≤n≤9)輸出由1~n組成的所有不重複的數字序列,每行乙個序列,數字與數字之間用空格隔開,行首行尾不留空格。

樣例輸入:numlist.in3

樣例輸出:numlist.out

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

*/#include

#include

int flag[10],a[10],b,n;//b代表層數(遞迴用棧理解),終止條件。

void print()

//答案與結果不符合順序,但不失為一種思路

#include

#define n 3

void swap(int *a,int x,int y)//轉換

void perm(int *a,int k,int m)//實現全排序

else}}

void main()

{int i,a[100];

for(i=0;i

遞迴之全排列演算法

假設有這樣乙個序列,找出這個序列的所有全排列。第一位有 n 種可能性,確定了第一位後就是求解剩下 n 1 個資料的排列問題,這樣就可以往下一直分解問題,直到序列結尾處,也就是終止條件。1 2 3 2 1 3 3 2 1 暫不考慮序列元素重複問題,測試序列 include using namespac...

遞迴之全排列問題

一 問題 設計乙個遞迴演算法生成n個元素的全排列。二 思路 其實就是將整個序列a 的每個元素一一提到序列a首個位置即a i 三 include using namespace std void swap int a,int b list k m 的所有排列,k是序列首下標,m是序列最後乙個下標 vo...

排列問題(全排列的遞迴演算法問題)

題目 設計乙個遞迴演算法生成n個元素的全排列。演算法講解 設r 是要進行排列的n個元素,ri r 集合x中元素的全排列記為perm x ri perm x 表示在全排列perm x 的每乙個排列前加上字首得到的排列。r的全排列可歸納定義如下 當n 1時,perm r r 其中r是集合r中唯一的元素 ...