程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LeetCode77:Combinations

LeetCode77:Combinations

編輯:關於C++

Given two integers n and k, return all possible combinations of k numbers out of 1 … n.

For example,
If n = 4 and k = 2, a solution is:

[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
Hide Tags Backtracking

給定一個數n,求1到n之間的所有的k個數的組合。
這個題目可以在紙上畫下草圖,明顯可以用遞歸求解。遞歸的終止條件是k=0,並且由於需要將組合保存到集合vector中,還需要使用回溯法來保存數據。
runtime:8ms

class Solution {
public:
    vector> combine(int n, int k) {
        vector> result;
        vector vec;
        helper(1,n,k,vec,result);
        return result;
    }

    void helper(int first,int last,int k,vector & vec,vector> & result)
    {
        if(k==0)
        {
            result.push_back(vec);
            return ;
        }

        for(int i=first;i<=last-k+1;i++)
        {
            vec.push_back(i);
            helper(i+1,last,k-1,vec,result);
            vec.pop_back();
        }
    }

};
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved