
贪心算法
FFFade_
XMU.2021.
展开
-
删数问题的优化
题目: 有N个数, 去掉任意的k个数,使剩下的数最小。 思路1: 删掉k个数,设剩下p个数,则每次只需在已确定的前一个数至n-p个数之间寻找最小的 数。 踩坑点:前导0和全为0的情况。忘了给n赋值。用(q==n)为递归终止判断条件不行。 #include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #define N 255 i...原创 2021-11-28 10:24:06 · 673 阅读 · 0 评论 -
线段覆盖问题(经典贪心)
题目:yyy要参加比赛,且一次只能参加一场比赛,问最多可以参加多少场? 输入:第一行n代表n场赛事,后面n行给出比赛的起止时间 输出:一个数,最多参加比赛的场数。 转换:在一个数轴上有n条线段,要从中取出不相交的k条,问k的最大值为多少? 思路:右端点越小,占的空间就越少,留给其他线段的空间就越多。 将线段按右端点进行排序,能放就放。 #include<stdio.h> #include<string.h> #include<ctype....原创 2021-11-28 00:19:42 · 1529 阅读 · 0 评论 -
合并果子问题(贪心算法)
题意:有n堆果子,重为ai。 每次合并果子消耗的体力为两堆果子重量之和。求消耗的最小体力。 转换:每次从n个数中取出最小的两个数,累加它们的和。数列中去掉了这两个数,新增了它们的 和。 思路1:类似于前缀和,对数组进行一次排序,求出每个数与它前一个数的和并存在另一个数组b 里。循环找出b中的最小值,进行累加,并更改最近的非0相关数据。 弊端:过于复杂,且没有必要再增一个b进行二级修改。对0的处理过于繁琐且易出错。是...原创 2021-11-27 23:50:50 · 2335 阅读 · 4 评论