酷!學園

技術討論區 => 程式討論版 => C/C++程式設計討論區 => 主題作者是: asd33785 於 2013-08-17 10:47

主題: 有關排列組合的程式
作者: asd337852013-08-17 10:47
1.請寫出能組合a, b, c, d, e的程式。

2.請寫出能排列a, b, c, d, e的程式。


舉例來說,我把例子縮小,如果要組合abc,其答案如下
a, b, c, ab, ac, bc, abc
如果要排列abc,其答案如下
abc, acb, bac, bca, cab, cba



#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define MAX 4
void perm(char *list,int i,int n)
{
int j,temp;
if(i==n)
{
for(j=0;j<n;j++)
printf("%c",list[j]);
printf("\n");
}
else
{
for(j=i;j<n;j++)
{

SWAP(list,list[j],temp);     

perm(list,i+1,n);

}
}
}
int main(void)
{
char list[MAX]={'a','b','c','d'};
perm(list,0,MAX);
system("pause");
return 0;
}


我的程式只能寫到a,b,c,d做排列,請問如果要a,b,c,d,e做排列要如何寫呢?

另外組合的程式想了很久卻想不出來,幫個忙,謝謝!

19行的list是list才對,不知道電腦怎麼無法顯示


主題: Re: 有關排列組合的程式
作者: elleryq2013-08-22 14:54
看起來是把 MAX 改成 5,然後修改跟 MAX 相關的那行就好了啊...