您的位置:首页 > 其它

POJ 2245 Lotto(组合问题)

2010-05-09 16:29 489 查看
//递归方法解决组合问题。
//打印出C(n,6)的组合
//没注意输出格式,PE了2次……每两个case有一个空行,最后一个case没有
#include<iostream>
#include<algorithm>
using namespace std;
int num[14];
int rcd[14];
int n,cnt;
void select_combination(int current,int p)//递归填充数并打印组合,相当于DFS过程
{
if(current == 6)//如果填充满了6个数,则打印
{
for(int i = 0;i < 5;i++)
printf("%d ",rcd[i]);
printf("%d/n",rcd[5]);
return;
}
else
{
for(int i = p;i < n;++i)
{
rcd[current] = num[i];//上次递归过程填充的是num[p-1],这次递归从num[p]开始填充
select_combination(current+1,i+1);//填充下一个位置
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
bool first = 1;
while(scanf("%d",&n))
{
if(n == 0)break;
if(!first)	printf("/n");
first = 0;

for(int i = 0;i < n;++i)
scanf("%d",&num[i]);
select_combination(0,0);//递归调用从0 0开始
}
return 0;
}


得找时间把排列和组合的代码整理下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: