0059 給定一些值和一個要組成的數字,求總的組合數(遍歷解答樹)
阿新 • • 發佈:2019-01-28
如:有1分,2分,5分,10分四種硬幣,每種硬幣無限,給定Target分錢,求多少種組合可以合成Target分錢?
// ShangJi.cpp : 定義控制檯應用程式的入口點。 #include <iostream> #include<vector> using namespace std; int count=0; int Target=0; int coin[4]={1,2,5,10}; int total=0; vector<int> solution; void dfs(int index) { if(total==Target) { count++; cout<<count<<":"; for (int i=0;i<(int)solution.size();i++) { cout<<solution[i]<<" "; } cout<<endl; return; } if(total>Target) return; for (int i=index;i<4;i++) { total += coin[i]; solution.push_back(coin[i]); dfs(i); solution.pop_back(); total -= coin[i]; } } int _tmain(int argc, _TCHAR* argv[]) { count = 0; cin>>Target; dfs(0); cout<<"總共有"<<count<<"種"<<endl; return 0; }