深搜输出可能的硬币组合

来源:互联网 发布:windows arping 编辑:程序博客网 时间:2024/06/06 23:58
#include <iostream>#include <bits/stdc++.h>using namespace std;int total;int target;int cnt;int coin[4]= {1,2,5,10};vector<int> ans;void dfs(int d)//索引号用来限制前面的钱数小于后面的,可以去除重复情况{    if(target==total)    {        cnt++;        cout<<cnt;        for(int i=0; i<ans.size(); i++)            cout<<" "<<ans[i];        cout<<endl;        return;    }    else if(total>target)    {        return ;    }    else    {        for(int i=d; i<4; i++)        {            total+=coin[i];            ans.push_back(coin[i]);            dfs(i);            ans.pop_back();            total-=coin[i];        }    }}int main(){    cin>>target;    total=0;    cnt=0;    dfs(0);    cout<<cnt<<endl;    return 0;}

0 0
原创粉丝点击