1100: 彩票
题目描述
有一种彩票的玩法是从1~49这49个整数中挑选6个数字。小明为此研究出一个选号的策略,就是从这49个数字中选出一个子集S,S中包含了k(k>6)个数字,然后从S中再选择6个数字作为最终选定的号码。
你的任务是,给你k和集合S,输出从S中选择投注号码的所有组合。
你的任务是,给你k和集合S,输出从S中选择投注号码的所有组合。
输入
输入包含多组测试数据。每组输入首先是一个整数k(6<k<13)。然后是k个整数,表示集合S,这k个整数按升序给出。当k=0时,输入结束。
输出
对于每组输入,输出所有的投注组合,每行一种,每种按照号码升序排列,所有组合按照字典序升序排列。
每两组输出之间输出一个空行。
每两组输出之间输出一个空行。
样例输入
7 1 2 3 4 5 6 78 1 2 3 5 8 13 21 340
样例输出
1 2 3 4 5 61 2 3 4 5 71 2 3 4 6 71 2 3 5 6 71 2 4 5 6 71 3 4 5 6 72 3 4 5 6 71 2 3 5 8 131 2 3 5 8 211 2 3 5 8 341 2 3 5 13 211 2 3 5 13 341 2 3 5 21 341 2 3 8 13 211 2 3 8 13 341 2 3 8 21 341 2 3 13 21 341 2 5 8 13 211 2 5 8 13 341 2 5 8 21 341 2 5 13 21 341 2 8 13 21 341 3 5 8 13 211 3 5 8 13 341 3 5 8 21 341 3 5 13 21 341 3 8 13 21 341 5 8 13 21 342 3 5 8 13 212 3 5 8 13 342 3 5 8 21 342 3 5 13 21 342 3 8 13 21 342 5 8 13 21 343 5 8 13 21 34
提示
来源
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int a[50],n;
int main()
{
int i,j,k,l,m,o;
while(cin>>n&&n)
{
for(i=1;i<=n;i++)
{
cin>>a[i];
}
/*for(i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}*/
for(i=1;i<=n-5;i++)
{
for(j=i+1;j<=n-4;j++)
{
for(k=j+1;k<=n-3;k++)
{
for(l=k+1;l<=n-2;l++)
{
for(m=l+1;m<=n-1;m++)
{
for(o=m+1;o<=n;o++)
{
cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[l]<<" "<<a[m]<<" "<<a[o]<<endl;
}
}
}
}
}
}
}
}