码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 216 Combination Sum III

时间:2015-09-03 01:52:27      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:leetcode   dfs   回溯法   

很基础的一道DFS,开始的时候觉得可能剪枝要处理的好一些,于是我的剪枝是:如果当前的值合适,那么剩下的和一定要大于剩下的个数*1&&小于剩下的个数*9,这虽然不是最优,但是处理起来比较简单,没想到样例只有18组,跑了0ms,数据太水了。

class Solution {
	private:
	 vector< vector<int> >ans;
     vector<int> v;
   public:
  void dfs(int num,int left,int cur) // 剩下的个数,剩下的值,当前值 
     {
     	if(num==0&&left==0)
     	{
	     	ans.push_back(v);
	     }
     	for(int i=1;i<=9;i++)
     	{
	     	if(i>cur&&left>=i&&left>=num&&left<=num*9)
	     	{
	     		v.push_back(i);
	     		dfs(num-1,left-i,i);
	     		v.pop_back();
	     	}
        }
     
     }
    vector< vector<int> > combinationSum3(int k, int n) {
         dfs(k,n,0);
         return ans;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

[leetcode] 216 Combination Sum III

标签:leetcode   dfs   回溯法   

原文地址:http://blog.csdn.net/nk_test/article/details/48186645

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!