顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - asd33785

頁: [1]
1
請幫我把以下的程式加上註解,謝謝!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20
static char a[MAX];
static int co;
void gen(int n){
n++;
char tmp;
for(int i=n;i<co;i++){
tmp=a[n];
a[n]=a;
a=tmp;
if(n==co-1)

printf("%s\n",a);
else
gen(n);
tmp=a[n];
a[n]=a;
a=tmp;
}
}

int main(){
printf("請輸入a,b,c,d,e:\n");
scanf("%s",a);
co=strlen(a);
gen(-1);

system("pause");
return 0;
}

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



頁: [1]