#include<bits/stdc++.h>
using namespace std;
const int Lim=300;
int value[5]={1,5,10,25,50};
const int N=1e4+1;
int Min[N];
int chase[N];
void solve()
{
for(int i=0;i<Lim;i++)
{
Min[i]=INT_MAX;
}
Min[0]=0;
for(int i=0;i<5;i++)
{
for(int j=value[i];j<Lim;j++)
{
if(Min[j-value[i]]+1<Min[j])
{
Min[j]=Min[j-value[i]]+1;
chase[j]=value[i];
}
}
}
}
void print_s(int *chase,int s)
{
while(s)
{
cout<<chase[s]<<" ";
s=s-chase[s];
}
}
int main ()
{
int s;
solve();
cin>>s;
cout<<Min[s]<<endl;
print_s(chase,s);
return 0;
}
硬币问题(输出硬币组合)
最新推荐文章于 2024-11-14 19:06:32 发布