题目描述
有无限多的硬币,硬币的面值为:1,5,11
若给定一个金额w,问你最少用多少个硬币能凑出w的金额?
输入
一个整数w(1<=w<=100)
输出
最少硬币个数
样例输入
15
样例输出
3
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int dp[n+1];//i元需要dp[i]个硬币
fill(dp,dp+n+1,150);
dp[0]=0,dp[1]=1,dp[5]=1,dp[11]=1;
for(int i=2;i<=n;i++){
if(i>1)dp[i]=min(dp[i],dp[i-1]+1);
if(i>5)dp[i]=min(dp[i],dp[i-5]+1);
if(i>11)dp[i]=min(dp[i],dp[i-11]+1);
}cout<<dp[n];
return 0;
}