简单说下题目:
给定n中硬币,分别是1.5.10.25.50,求给定任一金额所用的最少硬币组合
做题思路:
先用最小的硬币来把所有金额填充(注意这个金额题目会有限制),然后再依次增大硬币的金额,来更新所用的硬币数量
代码:
#include <bits/stdc++.h> using namespace std; int money[5] = {1,5,10,25,50}; int dp[300]; //求每个金额对应的最少硬币数量 void solve(){ for(int i = 0;i < 251; i++) dp[i] = INT_MAX; dp[0] = 0; for(int i = 0;i < 5; i++){ for(int j = money[i];j < 251; j++){ dp[j] = min(dp[j],dp[j-money[i]]+1); } } } int main() { int n; solve(); while(cin>>n){ cout<<dp[n]<<endl; } return 0; }