Lintcode152 Combinations solution 题解

【题目描述】

Given two integersnandk, return all possible combinations of numbers out of 1 ...n.

组给出两个整数n和k,返回从1......n中选出的k个数的组合。

【题目链接】

www.lintcode.com/en/problem/combinations/

【题目解析】

先枚举第一个数,然后枚举一个比第一个数大的数作为第二个数,……,最后枚举一个比前k-1个数都大的数作为第k个数,这样就能够枚举所有k个数的组合方案,又能够保证不出现重复的情况。

但是由于k是输入的,所以我们需要采取回溯的形式,即以递归嵌套的方式来动态的进行枚举。

然后就只需要在可以的范围内枚举下一个数,添加到current的末尾,这个数需要比last大,并且比n-k+1要小(确保之后的数还有空间)。

在枚举好后,就只需要在current之后添加该数,然后利用回溯的方法,递归的去枚举下一个数。

特别的,当k==0时,说明已经完成了枚举,只需要将current添加到ans末尾即可。

【参考答案】

www.jiuzhang.com/solutions/combinations/

你可能感兴趣的:(Lintcode152 Combinations solution 题解)