leetcode:39. 組合總和(回溯)

題目:

在這裏插入圖片描述

分析:

因爲返回的不是總數目,而是具體的情況,因此不適合使用dp。

dp,其實也是暴力枚舉,但是因爲有記錄狀態,可以省去已經求過的一些。

代碼:

vector<vector<int> > vv;
int size;
void f(vector<int> v,int tar,int c,vector<int> n)
{
 cout<<tar<<" "<<c<<endl;
 //從第c個數開始找總和爲tar的  
 if(c==size)
 {
  if(tar==0) vv.push_back(v);
  return;
 }
 f(v,tar,c+1,n);
 for(int i=1;tar-i*n[c]>=0;i++)
 {
  v.push_back(n[c]);
  f(v,tar-i*n[c],c+1,n);
  } 
}
int main()
{
 vector<int> n; 
 int target=7;
 size=n.size();
 vector <int> v;
 f(v,target,0,n);
 cout<<vv.size();
}
發佈了144 篇原創文章 · 獲贊 89 · 訪問量 3774
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章