关于输入一组数并输出所有全排列思考~
最近刚学C语言,以前没接触过编程这东西,算是个编程中菜鸟中的菜鸟吧,不经意想到用程序来解决“全排列”问题,思考许久,先想出了一种算法,如下:
【关于输入一组数并输出所有全排列思考~】#include
#include
#define NUM 4
void anagram(int[],int);
void print(int[]);
void main()
{
int d[NUM];
int i;
for(i=0;
i
/*printf("初始化后的数组顺序是:");
print(d);
*/
anagram(d,NUM);
system("pause");
}
void anagram(int d[],int n)
{
int i,j,temp;
if(n==1)
{
print(d);
return;
}
for(i=0;
i
/*printf("/ni = %d,n = %d, 准备调用aragram(d,%d)/n",i,n,n-1);
printf("这时候的数组顺序是:");
print(d);
*/
anagram(d,n-1);
temp=d[0];
for(j=1;
j<=n-1;
j++)
{
d[j-1]=d[j];
}
d[n-1]=temp;
}
}
void print(int d[])
{
int i;
for(i=0;
i
printf("%d",d[i]);
}
printf("/n");
}
这个程序刚写出来时以为很满意,可是我一分析它的时间复杂度吓我一跳,达到了O(n^n),这显然不好。这是我第一次写技术博客,由此开始我的学习之路,我决定再想想有没有更好的方法,希望大家有好的方法也可以告诉我,小弟我只是个初学者,希望能和各位CSDN的朋友交流不断提高自己~~
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- 四首关于旅行记忆的外文歌曲
- 醒不来的梦
- Node.js中readline模块实现终端输入
- 关于自我为中心的一点感想
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 关于Ruby的杂想
- 关于读书的思考
- 关于this的一些问题(1)
- 《声之形》