前言:
这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
我把期中测试的题全写成题解帮助他人
问题描述:
题目背景
本题线下文件测评时的说明:
- 可执行文件名:coin
- 提交源程序文件名:coin.cpp
- 输入文件名:coin.in
- 输出文件名:coin.out
- 时间限制:1秒
- 空间限制:256MB
题目描述
某国的硬币由稀有金属铸造,面值分别为 1 元,5 元,11 元,且硬币储备充足。
现要用硬币凑出价值为 w 元进行战略投资,请研究最少需要多少枚硬币?
保证每种硬币的个数足够用。
输入格式
输入一个整数 w,代表要凑出的硬币总价值。
输出格式
输出最少需要的硬币数量。
样例输入
15
样例输出
3
问题提示
50% 的数据满足 1≤ w ≤10000
100% 的数据满足 1≤ w ≤100000
问题解析:
标准动态规划完全背包
在前几题代码上改改即可
背包问题 完全背包(爱思创)_吾乃狙击神蛐的博客-CSDN博客
完整代码:
#include <bits/stdc++.h>
using namespace std;
int v[]={0,1,5,11};
int dp[5][100000];
int main()
{
int x,i,j;
cin>>x;
for(j=1;j<=x;j++) dp[0][j]=1e9;
for(i=1;i<=3;i++) dp[i][0]=0;
for(i=1;i<=3;i++)
{
for(j=1;j<=x;j++)
{
dp[i][j]=dp[i-1][j]+0;
if(j>=v[i])
dp[i][j]=min(dp[i][j],dp[i][j-v[i]]+1);//转换方程
}
}
cout<<dp[3][x];
return 0;
}