这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
经典的递归问题,递归+回溯解决。
注意代码中select_combination()的应用
// POJ 2245
// Tanky Woo
// www.wutianqi.com
#include
#include
using namespace std;
int num[14];
int lotto[14];
int n,cnt;
void select_combination(int current,int p)//递归填充数并打
印组合,相当于DFS过程
{
int i;
if(6 == current)
{
for(i = 0; i < 6; ++i)
printf("%d ", lotto[i]);
printf("\n");
}
else
{
for(i = p; i < n; ++i)
{
lotto[current] = num[i];
select_combination(current+1,
i+1);
}
}
}
// www.wutianqi.com
int main()
{
//freopen("in.txt","r",stdin);
bool first = 1;
while(scanf("%d",&n;) && n)
{
if(!first) printf("\n");
first = 0;
for(int i = 0;i < n;++i)
scanf("%d",#[i]);
select_combination(0,0);//递归调用从0 0开始
}
return 0;
}