算法第一章·贪心
本章我们来讲述一下何为“贪心思想”以及贪心算法的应用
贪心思想
贪心,顾名思义就是“有一颗贪婪的心,总是想要获得最大的利益”,后面我们还会讲到DP(动态规划)也是关于最优解的。贪心思想遵循“局部最优解即全局最优解”的思想,说明白一点就是当前状态下选择最优解,就会造就整个事件都是最优解
贪心实现
依照我个人的想法来看,贪心就是一个单纯的结构体排序,如下列代码(这个模板是可以套的):
#include<bits/stdc++.h> using namespace std; struct commodity{ int score,value; }bin[10010]; bool cmp(commodity a,commodity b) { return a.value>b.value; } int n,m,num,ans; int main() { cin>>n>>m; for(int i=0;i<n;i++) { cin>>bin[i].score>>bin[i].value; } sort(bin,bin+n,cmp); for(int i=0;i<n;i++) { if(num>m) break; num+=bin[i].score,ans+=bin[i].value; } cout<<ans; return 0; }
现在可以给出一个场景,假设小明出去买菜,遇到了n个卖菜的摊贩,小明希望花最少的钱去购买更多的菜(购买所需钱数不得超过m),试求最小花费金额是多少?
输入说明:第一行输入两个正整数n,m
接下来n行输入,分别表示菜摊贩的报价
输出说明:输出在金额不超过m情况下的菜数量
样例输入:
5 3 1 3 2 8 4 13 1 5 2 6
样例输出:13
同样的,我可以将上述场景换为商场、书店、甚至是找钱最值问题都有可能,思路相同。只需按照上面的模板按照需求加以修改即可
好的,那么本章到此就结束了,喜欢的可以给作者一个赞或关注哦!!!
你的赞是我更新的动力!!!

浙公网安备 33010602011771号