编程题
抽奖游戏Lotto ## 来源 University of Ulm Local Contest 1996 (ZOJ1089, POJ2245) ## 题目描述 在一种抽奖游戏中,游戏者必须从集合S={ 1, 2, ..., 49 }中选取6个数。选取6个数的一种策略是先从S中选取一个子集S1,子集S1包含k个数,k>6,然后再从S1中选取6个数。例如,当k = 8时,假设选取的子集S1 = { 1, 2, 3, 5, 8, 13, 21, 34 },从S1中再选6个数就有28种可能:[1,2,3,5,8,13],[1,2,3,5,8,21],[1,2,3,5,8,34],[1,2,3,5,13,21],...,[3,5,8,13,21,34]。 你的任务是编写程序,读入k和子集S1,输出从子集S1的k个数种选取6个数的所有情形。 ## 输入描述 输入文件包含多个测试数据。每个测试数据占一行,包含若干个整数,用空格隔开。这些整数中,第1个数为k,6 < k < 13,然后是k个整数,代表子集S1中的k个数,按升序排列。k = 0代表输入结束。 ## 输出描述 对每个测试数据,输出所有组合,每个组合占一行。组合中的数以升序排列,每个数用空格隔开。各组合以字典序排列,也就是说,先按最小的数排列,如果最小的数相同,再按次小的数排列,如此类推。如样例输出所示。各个测试数据对应的输出之间用空行隔开,最后一个测试数据的输出之后没有空行。 ## 样例输入 ```txt 7 1 2 3 4 5 6 7 0 ``` ## 样例输出 ```txt 1 2 3 4 5 6 1 2 3 4 5 7 1 2 3 4 6 7 1 2 3 5 6 7 1 2 4 5 6 7 1 3 4 5 6 7 2 3 4 5 6 7 ```
查看答案
赣ICP备20007335号-2