问题:回溯算法求组合。
这是用回溯算法求组合数
#include <iostream.h>
const int MAXN = 30;
int a[MAXN];
void comb(int m, int k)
{
int i = 0;
a[i] = 1;
do
{
if (a[i] - i <= m - k + 1)
{
if (i == k - 1)
{
for (int j=0; j<k; j++)
cout<<a[j]<<' '<<endl;
a[i]++;
continue;
}
else
{
i++;
a[i] = a[i-1] + 1;
}
}
else
{
if (i == 0)
return ;
a[--i]++;
}
}while(1);
}
void main()
{
comb(5, 3);
}
输出不是预期的结果,大家帮忙看看有什么逻辑错误。