0059 给定一些值和一个要组成的数字,求总的组合数(遍历解答树)

来源:互联网 发布:golang 2.0 编辑:程序博客网 时间:2024/06/02 02:24

如:有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; }



0 0
原创粉丝点击