数据结构与算法[LeetCode]—Combinations 求1至n中所有K位数的所有组合

来源:互联网 发布:路基路面工程设计软件 编辑:程序博客网 时间:2024/06/05 09:41

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

分析:由于需要穷举所有的情况,且有条件遍历。则用深搜DFS的方式。

//深搜,DFSclass Solution{public:   vector<vector<int> > combine(int n, int k) {     vector<vector<int> >ret;     vector<int> path;     dfs(n,k,1,0,path,ret);     return ret;    }private:    //start表示,本次起始数,cur表示path中已经有cur个数   void dfs(int n,int k,int start,int cur,vector<int> &path,vector<vector<int> > &ret)   {       if(cur==k){        ret.push_back(path);        return;        }       for(int i=start;i<=n;++i){         path.push_back(i);         dfs(n,k,i+1,cur+1,path,ret);         path.pop_back();       }   }};


0 0
原创粉丝点击