文章目录
- 一,贪心算法
- 二,以分配题为例
-
- 2.1,饼干分配
- 2.2,最少硬币问题
- 三,区间问题
欢迎关注一,贪心算法 【蓝桥杯准备每日练习|【蓝桥杯方法篇】贪心算法详解一】贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
蓝桥杯每日练习合集
共同努力。
贪心——>局部最优——>全局最优
缺点:
有写情况并不适用。
缺点:
不从总体上考虑其它可能情况,每次选取局部最优解,不再进行回溯处理,所以很少情况下得到最优解。得到的解不代表是最优解。
二,以分配题为例 2.1,饼干分配 题目描述
有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃 最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩 子可以吃饱。
输入输出样例
输入两个数组,分别代表孩子的饥饿度和饼干的大小。输出最多有多少孩子可以吃饱的数 量。
Input:
1,2
1,2,3
Output:
2
思路分析:这道题可以使用贪心算法,我们可以将孩子饥饿度大小排序,再吧饼干大小排序,尽量把小饼干分出去。
看我的解题代码:
#include
using namespace std;
//上进小菜猪
int main()
{
int a=0,b[100],c=0;
while(cin>>a)
{
b[c++]=a;
if(cin.get()=='\n')break;
}
int a1=0,b1[100],c1=0;
while(cin>>a1)
{
b[c1++]=a1;
if(cin.get()=='\n')break;
}
sort(b,b+c);
sort(b1,b1+c1);
int cout1=0;
for(int i=0,j=0;
i
2.2,最少硬币问题 题目;
有1、2、5、10、20、50、100七种面值的硬币,要支付指定的金额,问怎么支付所用的硬币个数最少
输入:
157
输出:
4
思路:
可以使用贪心算法,以大数优先,这样就可以保持支付使用的硬币最少。
看我的解题代码;
#include
using namespace std;
int main()
{
int x;
cin>>x;
int a[10]={1,2,5,10,20,50,100};
int cout1=0;
while(x)
{
for(int i=6;
i>=0;
i--)
{
if(x>=a[i])
{
cout1++;
x-=a[i];
break;
}
}
}
cout<
三,区间问题 区间问题较为复杂,情况多变,今天时间有点晚,明天还需要仔细学习,后需更新【蓝桥杯方法篇】贪心算法详解二,主要攻克贪心算法的区间问题的相关思路。
区间问题详细细分:
1.区间选取
2.区间选点问题
3.区间完全覆盖问题
4.区间分组问题
5.给定区间,求覆盖的最大长度问题
推荐阅读
- 蓝桥杯准备每日练习|【蓝桥杯技巧篇】next_permutation全排列详解
- 模拟赛|2022.3.13模拟赛总结
- 数据结构|PTA查找—二叉搜索树的删除操作
- 算法|PTA查找—构造二叉检索树
- c++|PTA堆栈—有效括号判断
- 剑指offer|剑指offer 旋转数组的最小数字
- CSE 11 COVID Genomic
- codeforce|Codeforces Round #774 (Div. 2) D. Weight the Tree
- CUMTOJ|内部收益率(二分)