贪心

  学贪心,首先要知道的这是一种策略,而不是算法

————————————————————————————

贪心:

  贪心没有固定的算法框架,它在不同的题目中出现的形式都是不一样的。但是它算法设计的关键是贪心策略的选择。也就是说想要贪心,你就得从题目的某个条件为基础,根据这个条件选择如何能得到局部的最优解。

思路:
   1、看看这道题能不能用贪心
   2、选择贪心的标准
   3、根据标准把求解的问题分成若干个子问题
   4、对每一个子问题求解,得到子问题的局部最优解
   5、把每个子问题的解局部最优解

其实贪心也不是很难啦,只要懂这些概念相信就不难,下面给一道例题

————————————————————————————

题目简述:农夫有一个长为S(1 <=S < 2,000,000,007)的书架,同时他又有n头奶奶牛,第i头奶牛的长度为h_i。他想利用这n只奶牛通过“叠罗汉”的方式叠成一座奶牛塔直至书架的顶端,问最少叠几只奶牛能够到达书架的顶端。(保证有解)

————————————————————————————

这道题思路很简单,只要从大到小排序,然后再叠塔就万事大吉

————————————————————————————

代码

#include<bits/stdc++.h>
using namespace std;
int nainiuta[20001],x,y,sum=0;//设置这么一个变量名,纯属多余,我只是方便看而已,切勿学习
bool cmp(int a,int b){return (a>b);}
int main(){
	cin>>x>>y;
	for (int i=1;i<=x;i++) 
	cin>>nainiuta[i];
	sort(nainiuta+1,nainiuta+x+1,cmp);
	for(;y>0;)
	  y-=nainiuta[++sum];
	cout<<sum;
	return 0;
}

贪心就差不多到这了,要是有不理解的,发我邮箱@1419036629@qq.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值