输入一个金额,从现有的1,5,10,20,50,100,这六种中取,问最少取多少个硬币才能正好凑够
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
#define MAX 10000
int dp[MAX];
Inint()
{
for(int i=0;i<=MAX;i++)//初始化为i元需要i个硬币
dp[i]=i;
}
int main()
{
int n;
Inint();
while(cin>>n)
{
int a[]={1,5,10,20,50,100};//硬币的种类
for(int i=1;i<=n;i++)
for(int j=0;j<6;j++)
{
if((i>=a[j])&&(dp[i-a[j]]+1<dp[i]))//只要比初始化的硬币数小就更新
{
dp[i]=dp[i-a[j]]+1;
}
}
cout<<dp[n]<<endl;
}
return 0;
}
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;
#define MAX 10000
int dp[MAX];
Inint()
{
for(int i=0;i<=MAX;i++)//初始化为i元需要i个硬币
dp[i]=i;
}
int main()
{
int n;
Inint();
while(cin>>n)
{
int a[]={1,5,10,20,50,100};//硬币的种类
for(int i=1;i<=n;i++)
for(int j=0;j<6;j++)
{
if((i>=a[j])&&(dp[i-a[j]]+1<dp[i]))//只要比初始化的硬币数小就更新
{
dp[i]=dp[i-a[j]]+1;
}
}
cout<<dp[n]<<endl;
}
return 0;
}