Combinations

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],

]

C++实现代码:

#include<iostream>

#include<vector>

using namespace std;



class Solution {

public:

    vector<vector<int> > combine(int n, int k) {

        if(n==0||k==0||n<k)

            return vector<vector<int> >();

        vector<vector<int> > ret;

        vector<int> path;

        combinehelper(n,k,1,ret,path);

        return ret;

    }

    void combinehelper(int n,int k,int start,vector<vector<int> > &ret,vector<int> &path)

    {

        if(k==0)

        {

            ret.push_back(path);

            return;

        }

        int i;

        for(i=start;i<=n;i++)

        {

            path.push_back(i);

            combinehelper(n,k-1,i+1,ret,path);

            path.pop_back();

        }

    }

};



int main()

{

    Solution s;

    vector<vector<int> > result=s.combine(1,2);

    for(auto a:result)

    {

        for(auto v:a)

            cout<<v<<" ";

        cout<<endl;

    }

}

 

 

你可能感兴趣的:(com)