问题描述
题目原型大概如下:
学校要评优秀学生,有十个平时都很优秀的学生,他们之间不相上下,但是评选的名额有限,假设学生人数是 n (0 < n <= 10) , 评选的名额数时m(0< m <= n),那么希望随机从n名学生中选出m个学生,并且按字典序的列出所有可能的获得优秀的学生名额。n个学生的序号时从 1…n。
示例
输入:
5 2
输出:
54
53
52
51
43
42
41
32
31
21
思路
假设n个学生的序号是[1,2,…,n],从中选m个学生,我们生成一个长度为m的数组,记录选学生的序号索引,例如n=5,m=2,那么index=[0,1]是一开始的选择学生的索引,index=[n-m,n-m+1]=[3,4]是最后一种情况,这里说明一下如何通过index数组求出编号,因为开始我们是从最小索引开始,那么用n-index[i] (0<=i
代码
//注意end index中保存的索引时相对于n来说的范围时[0,1,...,n-2,n-1]
public void getAllCase(int<