有没有人会写逻辑简单点的,好理解的,谢谢
感觉全排列好难。。。
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无用
悬赏问题
- ¥15 C++ 句柄后台鼠标拖动如何实现
- ¥15 有人会SIRIUS 5.8.0这个软件吗
- ¥30 comsol仿真等离激元
- ¥15 静电纺丝煅烧后如何得到柔性纤维
- ¥15 (标签-react native|关键词-镜像源)
- ¥100 照片生成3D人脸视频
- ¥15 伪装视频时长问题修改MP4的时长问题,
- ¥15 JETSON NANO
- ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
- ¥20 关于 openpyxl 处理excel文件地问题