【題目描述】
Given two integersnandk, return all possible combinations of?k?numbers out of 1 ...n.
組給出兩個整數(shù)n和k尔觉,返回從1......n中選出的k個數(shù)的組合狞洋。
【題目鏈接】
www.lintcode.com/en/problem/combinations/
【題目解析】
先枚舉第一個數(shù)薄榛,然后枚舉一個比第一個數(shù)大的數(shù)作為第二個數(shù)蹋宦,……,最后枚舉一個比前k-1個數(shù)都大的數(shù)作為第k個數(shù)叨恨,這樣就能夠枚舉所有k個數(shù)的組合方案午磁,又能夠保證不出現(xiàn)重復的情況莺戒。
但是由于k是輸入的掰烟,所以我們需要采取回溯的形式爽蝴,即以遞歸嵌套的方式來動態(tài)的進行枚舉。
然后就只需要在可以的范圍內(nèi)枚舉下一個數(shù)纫骑,添加到current的末尾蝎亚,這個數(shù)需要比last大,并且比n-k+1要芯寤恰(確保之后的數(shù)還有空間)颖对。
在枚舉好后,就只需要在current之后添加該數(shù)磨隘,然后利用回溯的方法缤底,遞歸的去枚舉下一個數(shù)。
特別的番捂,當k==0時个唧,說明已經(jīng)完成了枚舉,只需要將current添加到ans末尾即可设预。
【參考答案】