1 条题解
-
0
题目解析
题意分析
这道题目要求我们计算如何用最少数量的硬币(美元、美元、美元和美元)来凑出给定的找零金额(以美分为单位)。具体规则如下:
-
输入:
- 第一行是测试数据集的数量 ()
- 每个测试数据是一个整数 (),表示需要找零的金额(单位:美分)
-
输出:
- 对每个测试数据,输出数据集编号和最少硬币的组合,包括:
- :美元硬币的数量
- :美元硬币的数量
- :美元硬币的数量
- :美元硬币的数量
- 对每个测试数据,输出数据集编号和最少硬币的组合,包括:
-
约束条件:
- 必须使用最少数量的硬币
- 找零金额不超过美元(即美分)
解题思路
- 贪心算法:这是一个典型的贪心算法问题。为了用最少数量的硬币凑出给定的金额,我们应该优先使用面值较大的硬币。
- 硬币面值:
- 美元(美分)
- 美元(美分)
- 美元(美分)
- 美元(美分)
- 计算步骤:
- 从最大的面值(美分)开始,计算最多能用多少个该面值的硬币:
- 计算剩余金额:
- 对美分硬币:
- 剩余金额:
- 对美分硬币:
- 剩余金额即为美分硬币数量:
标程
#include <iostream> using namespace std; int main() { int n,m; cin>>n; int i=1; while(n--) { cin>>m; int a=0,b=0,c=0,d=0; if(m>=25) { a+=m/25; m=m%25; } if(m>=10&&m<25) { b+=m/10; m=m%10; } if(m>=5&&m<10) { c+=m/5; m=m%5; } if(m>0&&m<5) { d+=m; } cout<<i++<<" "<<a<<" QUARTER(S), "<<b<<" DIME(S), "<<c<<" NICKEL(S), "<<d<<" PENNY(S)"<<endl; } return 0; }
-
- 1
信息
- ID
- 2086
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 8
- 已通过
- 1
- 上传者