1 条题解
-
0
自动搬运
来自洛谷,原作者为

sgl654321
风起雨停,天又放晴搬运于
2025-08-24 21:42:11,当前版本为作者最后更新于2023-03-18 15:48:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目描述
种纸币,要想凑出 的面值,至少要几张纸币?
解题思路
一眼 dp 题。dp 题的解题思路通常为:读懂题意,设计状态,确定目标态和初始态,思考转移方程,思考优化。
设计状态: 表示凑出面值为 至少需要的纸币张数。
目标态:;初始态:,因为凑出 元一张纸币都不需要。
转移方程:
这是因为如果 需要用 张纸币,那么只需要加上 这一张纸币,就能用这 张凑出 了。
复杂度 ,因此不需要优化。
参考代码
注意:由于涉及到取 操作,所以必须将初始值设为一个极大值。
#include<bits/stdc++.h> using namespace std; long long n,w,a[1010],f[100010]; int main(){ cin>>n>>w; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=10010;i++)f[i]=1145141919; for(int i=1;i<=n;i++) for(int j=a[i];j<=w;j++) f[j]=min(f[j],f[j-a[i]]+1); cout<<f[w]<<endl; return 0; }
- 1
信息
- ID
- 8496
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者