穷举所有排列

mac2022-06-30  85

描述:

 

输入一个小于10的正整数n,按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。

输入:

 

输入一个小于10的正整数n。

输出:

 

按把每个元素都交换到最前面一次的方法,输出前n个小写字母的所有排列。

输入样例:

 

3

输出样例:

 

abcacbbacbcacbacab

1 #include<stdio.h> 2 3 int n; 4 int str[10001]; 5 int used[10001] = {0}; 6 7 void dfs(int x); 8 9 int main() 10 { 11 scanf("%d", &n); 12 13 for (int i=97; i<122; i++) 14 { 15 str[i-97] = i; 16 } 17 18 dfs(0); 19 20 return 0; 21 } 22 23 void dfs(int x) //递归思想与穷举二进制数类似,第一位固定, 将次高位与第一位交换 24 { 25 int i; 26 if (x == n) 27 { 28 for (i=0; i<n; i++) 29 { 30 printf("%c", str[i]); 31 } 32 printf("\n"); 33 } 34 else 35 { 36 for (i=x; i<n; i++) //从str[0]相互交换,再交换str[0] 与 str[1] , 再交换str[0] 与 str[2] 37 { 38 int temp; 39 temp = str[i]; 40 str[i] = str[x]; 41 str[x] = temp; 42 dfs(x+1); 43 temp = str[i]; 44 str[i] = str[x]; 45 str[x] = temp; 46 } 47 } 48 } 49

 

转载于:https://www.cnblogs.com/m-hhh/p/9268799.html

最新回复(0)