全排列的实现
来源:互联网 发布:淘宝怎么测试标题 编辑:程序博客网 时间:2024/04/29 20:02
/*
*用递归进行全排列
*思路是:比如a,b,c三个数进行全排列,a先拿出来,b、c进行全排列,b、c中b又先拿出来,c进行全排列,然后c拿出来,b进行全排列,依次类推。
*/
#include<stdio.h>
int k=0;
int count=0;//计算有多少种排列
char str[10];//保存一个排列
//对数组中的数字行全排列,结果保存在str二维字符数组中
void arrange(int *array,int length)
{
int i,t;
if(length==0){
puts("no element!");
return;
}
if(length==1){//只有一个元素进行全排列
str[k]=*array+'0';
str[k+1]='\0';
puts(str);
count++;
return;
}
for(i=0;i<length;i++){
if(i){//当要拿出来的数不在数组的第一位时,把它放到第一位,即拿出一个数来
t=*array;
*array=*(array+i);
*(array+i)=t;
}
str[k++]=*array+'0';//把拿出来的数放入排列中
arrange(array+1,length-1);//数组下标加一,即除去第一个拿出来的数,剩下得数全排列
k--;//
if(i){//把拿出的数字还原,不然会影响后面的排列,比如a,b,c。a,c,b 这两个排完之后,还原成a,b,c,在把b拿出来...
t=*array;
*array=*(array+i);
*(array+i)=t;
}
}
}
void main()
{
int array[10]={1,3,5,7};
arrange(array,4);
printf("count == 4! == %d\n",count);
}
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- Java实现的全排列和排列
- Java实现的全排列和排列
- 全排列的简单实现
- 全排列的一种实现
- 全排列的递归实现
- 全排列的递归实现
- 可复用的全排列实现
- 全排列的递归实现
- jap
- 10.12 在tomcat中配置虚拟主机(必须有图)
- ACM入门之新手入门
- Dataview
- mac lion tips
- 全排列的实现
- TELNET 命令使用介绍
- SAP HANA-迅捷企业之选
- java中垃圾回收机制(GC)
- linux下如何挂载U盘,虚拟机下如何挂载U盘,Ubuntu下如何挂载U盘
- 面试题精选-阻塞与非阻塞区别、同步与异步区别
- JustTest2
- Windows Phone的应用程序认证要求
- 设置页面文本框中输入限制通用方法