字串: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...