- 论坛徽章:
- 0
|
算法问题?
我给一个程序,抛砖引玉。记得上次有一个问题,我第一个回的,结果后面回了n多算法,每个都要跟我的比较比我的好在哪里:(
我的程序的好处是n和m可以订制,比如这个问题n=9, m=3。
另一个问题,如果要就题论题的话,也挺好解决,comb函数中每次选三个就行了,不过要改成加一个参数k使得n=m*k的情况就要麻烦一点。[code]#include <stdio.h>;
#include <stdlib.h>;
#define MAXN 1000
int selected[MAXN]={0};
int n;
void comb(int start , int m)
{
int i;
if(m==0)
{
for(i=0; i<n; i++)
if(selected[i])
printf("%d ",i+1);
printf("\n");
}
else
for(i=start; i<=n-m; i++)
{
selected[i]=1;
comb(i+1, m-1);
selected[i]=0;
}
}
/*----------------------------------
|
|