leetcode-Combinations-77
Posted 0_summer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-Combinations-77相关的知识,希望对你有一定的参考价值。
输入n和k,求1~n中任选k个数的所有组合
这题是选择不是排列,所以用dfs+回溯
还是那个问题——去重:想象一颗树,每一层相同的元素只搜索一次,下次若同一层这个元素已经做过了就跳过,具体看代码
1 class Solution { 2 public: 3 void dfs(vector<int> v,int i,vector<vector<int> > &ans,vector<int> vv,int k){ 4 if(vv.size()==k){ 5 ans.push_back(vv); 6 return; 7 } 8 for(int j=i+1;j<v.size();j++){ 9 if(j!=i+1&&v[j]==v[j-1]) continue; 10 vv.push_back(v[j]); 11 dfs(v,j,ans,vv,k); 12 vv.pop_back(); 13 } 14 } 15 vector<vector<int> > combine(int n, int k) { 16 vector<int> v(n); 17 for(int i=0;i<n;i++) v[i]=i+1; 18 vector<vector<int> > ans; 19 vector<int> vv; 20 for(int i=0;i<v.size();i++){ 21 vv.push_back(v[i]); 22 dfs(v,i,ans,vv,k); 23 vv.pop_back(); 24 } 25 return ans; 26 } 27 };
以上是关于leetcode-Combinations-77的主要内容,如果未能解决你的问题,请参考以下文章