该楼层疑似违规已被系统折叠隐藏此楼查看此楼
/*
*文件名:Permutation.c
*用途:全排列算法
*编程环境:WinXPSP2+CL8.0
*完成日期:.2Ver0.01
*作者:88250
*联系方式:E-mail:DL88250@QQ:845765
*/
#include
#include
intcount=0;
voidpermutation(charper[],intm,intlen)
{
inti;
chartmp;
if(m
permutation(per,m+1,len);
for(i=m+1;i
/*选当次的排列“头”*/
tmp=per[m];
per[m]=per[i];
per[i]=tmp;
permutation(per,m+1,len);
/*恢复上一次的排列*/
tmp=per[m];
per[m]=per[i];
per[i]=tmp;
}
}else{
++count;/*对排列进行计数*/
/*调整一下格式^^*/
printf("%s",per);
}
return;
}
intmain(void)
{
inti=time(NULL);
charper[]="ABCD";
permutation(per,0,strlen(per));
printf("Thetotal:%d",count);
return0;
}
/*
*文件名:Combination.c
*用途:组合算法
*编程环境:WinXPSP2+CL8.0
*完成日期:.2Ver0.01
*作者:88250
*联系方式:E-mail:DL88250@QQ:845765
*/
#include
#defineMAX_NUM20
intcomb[MAX_NUM];
voidcombination(intm,intn)
{
inti,j;
for(i=m;i>=n;i--){
comb[n]=i;/*选择当前的“头”元素*/
if(n>1){
/*进入下一次更小的组合问题*/
combination(i-1,n-1);
}else{
/*满了需要的组合数,输出*/
for(j=comb[0];j>0;j--){
printf("%c",comb[j]+64);
}
printf("");
}
}
return;
}
intmain(intargc,char*argv[])
{
comb[0]=2;
combination(4,comb[0]);/*C(4,2)*/
return0;
}
如果觉得《c语言程序排列与组合 C语言实现排列/组合算法》对你有帮助,请点赞、收藏,并留下你的观点哦!