#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;
}
深搜输出可能的硬币组合
最新推荐文章于 2024-04-28 14:51:35 发布