首页 > 试题广场 >

硬币凑钱

[编程题]硬币凑钱
  • 热度指数:778 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt} 银行拥有面值为 7 元、5 元与 1 元的硬币若干,每种面值的硬币数量均视为无限。现在需要支付恰好 n 元,求出所需硬币数量的最小值。

输入描述:
\hspace{15pt} 在一行上输入一个整数 n\left(1\leqq n\leqq 10^6\right),表示需要支付的金额(单位:元)。


输出描述:
\hspace{15pt} 输出一个整数,表示凑成 n 元所需的最少硬币数量。
示例1

输入

8

输出

2

说明

该样例中,可选择一枚 7 元硬币与一枚 1 元硬币,支付 7+1=8 元,共使用 2 枚硬币。无法使用更少的硬币凑成 8 元。
示例2

输入

10

输出

2

说明

该样例中,可选择两枚 5 元硬币,支付 5+5=10 元,共使用 2 枚硬币。
头像 缘珩369
发表于 2025-08-08 09:02:48
每一个状态,可以由dp[i-1] 和 dp[i-5] 和 dp[i-7]这三种状态 +1 转移过来分别枚举三种状态取最小值答案即为最优解 #include<bits/stdc++.h> #define int long long using namespace std; co 展开全文
头像 ZYCwuque
发表于 2025-08-22 23:56:55
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new S 展开全文
头像 Ryson
发表于 2025-07-25 17:53:41
#include <iostream> using namespace std; int main() { int total; while (cin >> total) { // 注意 while 处理多个 case int a = tot 展开全文
头像 丨阿伟丨
发表于 2025-08-28 14:15:15
题目链接 硬币凑钱 题目描述 银行拥有面值为1元、5元与7元的硬币若干,每种面值的硬币数量均视为无限。现在需要支付恰好 元,求出所需硬币数量的最小值。 解题思路 这是一个典型的“完全背包”求最优解的问题。我们可以使用动态规划来求解。 我们定义一个一维数组 ,其中 表示凑成总金额为 所需的最少硬 展开全文
头像 星0v0空
发表于 2025-09-01 10:26:23
#include <iostream> using namespace std; int main() { int n ; cin >> n; int ans = n; if(n <= 70){ int now = 0; 展开全文
头像 牛客83660149号
发表于 2025-08-21 22:57:26
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n 展开全文