C語言 遞迴實現元素的全排列和子集

2021-06-27 17:13:13 字數 1030 閱讀 6219

字串:abc,它的全排列有六個

**:

#include

#include

#define swap(a,b,t) ((t)=(a),(a)=(b),(b)=(t))

void permutation(char *ch, int min, int max) //min和max確定了需要排序的元素區間 min-max

else }

}void main()

; permutation(p, 0, sizeof(p)-1 - 1);

printf("count=%d\n", count);

system("pause");

}

結果如下:

然後,完成這一步之後,我分析了遞迴結束的條件,能不能通過改變遞迴條件,來達到,輸出任意個數(不超過最大個數)元素排列的所有可能。

最終,我給出的**為:

#include

#include

#define swap(a,b,t) ((t)=(a),(a)=(b),(b)=(t))

int count=0;

int num=2; //由於c語言沒有引用,我也不想使用指標,所以就定義了全域性變數。它的作用是需要給多少個元素進行排列

void permutation1(char *ch, int min, int max,int n)

else }

}void main()

; permutation1(p, 0, sizeof(p)-1-1,num);

printf("count=%d\n", count);

system("pause");

}

結果:

符合我們的要求。

全排列 C語言 遞迴

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

全排列(遞迴) C 實現

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

全排列和去重全排列 遞迴實現

一 全排列的概念 根據360百科,我們知道從n個不同元素中任取m m n 個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的乙個排列。當m n時所有的排列情況叫全排列。二 全排列的演算法 三 接下來我們學習第一種方法 遞迴實現全排列 include include using nam...