贪心----硬币问题、区间问题、字典序问题

本文介绍了三种贪心算法的应用:首先解释了如何使用贪心策略解决硬币找零问题,以最少的硬币数支付指定金额;接着讨论了在给定时间段的工作选择问题,以参与最多数量的工作为目标;最后探讨了字典序问题,通过比较字符串首尾字符来构造字典序最小的字符串。
摘要由CSDN通过智能技术生成

贪心----硬币、区间、字典序问题


贪心法就是遵循某种规则,不断贪心的选取当前最优策略的算法设计方法

硬币问题

题意:
有1元,5元,10元,50元,100元,500元的硬币各C1 , C5 , C10 , C50 , C100 , C500 枚。现在要用这些硬币来支付A 元,最少需要多少枚硬币?假设本题至少存在一种支付方案。

限制条件:
0<=C1 , C5 , C10 , C50 , C100 , C500<=100000000000
0<=A<=1000000000000

样例:
输入
C1=3,C5=2,C10=1,C50=3,C100=0,C500=2,A=620;
输出
6(500元硬币1枚,50元2枚,10元1枚,5元2枚,合计6枚)

思路:
优先使用面值最大的硬币
代码:

#include"bits/stdc++.h"
using namespace std;


int main(){
   
	int v[6]={
   1,5,10,50,100,500};//输入硬币面值 
	int c[6]={
   3,2,1,3,0,2};//输入硬币个数 
    int a=620; //输入所求面值大小 
	int ans=0;
	for(int i=5;i>=0;i--
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值