赞
踩
这里有个剪枝记录下。
i<=n-k+1
比如n=13,k=4,
所以不用循环到n.
这里max(i)+再选几个数字=n+1
所以,max(i)=n-1-再选几个数字
我们用k代表再选几个数字。
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int>>ans; vector<int>tep; dfs(n,k,ans,tep,1); return ans; } void dfs(int n,int k,vector<vector<int>>& ans,vector<int> tep,int index){ if(k==0){ ans.push_back(tep); return; } for(int i=index;i<=n-k+1;i++){ tep.push_back(i); dfs(n,k-1,ans,tep,i+1); tep.pop_back(); } } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。