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才對,不知道電腦怎麼無法顯示