别人为我提供了下面的算法,太慢了,有好点的吗?
>>>>>
以下是比较原始的组合生成法,但是你应该先掌握这个.
#include <iostream.h>
#define MAXN 100
int a[MAXN];
int flag[MAXN];
void comb(int m, int k, int s)
{
int i;
if (s >= k)
{
for (i = 0;
i < k;
i++)
cout << a << " ";
cout << endl;
}
else
{
for (i = 1;
i <= m;
i++)
if (0 == flag)
{
flag=1;
a=i;
comb(m,k,s+1);
a=0;
flag=0;
}
}
}
void main()
{
int i;
for (i=0;
i<MAXN;
i++)
a=flag=0;
comb(3,2,0);