有没有人会写逻辑简单点的,好理解的,谢谢
感觉全排列好难。。。
1条回答 默认 最新
threenewbee 2020-03-15 18:23关注1个数字全排列 1 种
2个数字全排列,分别把 1 2 排前面,剩下的1个数字跟后面
3个数字全排列,分别把 1 2 3 排前面,每次剩下2个数字,对它全排列。
n个数字全排列,分别把1 2 3 ... n 放在前面,然后每个后面对 n - 1 全排列。
因此就可以递归了#include<stdio.h> #include<string.h> void swap(char *a,char *b) { char temp; temp = *a; *a = *b; *b = temp; } void Allarrange(char *str,int k,int len) { int i; if(k==len) { static int s_i=1; printf("第%d种排列为:\t%s\n",s_i++,str); } else { for(i=k;i<=len;i++) { swap(str+i,str+k); Allarrange(str,k+1,len); swap(str+i,str+k); } } } int main() { char str[10]; printf("请输入排列的字符串:"); gets(str); Allarrange(str,0,strlen(str)-1); return 0; }评论 打赏 举报解决 1无用