贪心算法
NCU-wfb
go!go!go!
展开
-
贪心算法-删数问题
分析: 我们可以先思考一下。当删除一个长数中的一个数字时,为了得到更小的一个数,是删除最大的那个数呢,还是删除最前面的那个“峰”呢?假设一个数为154389,当我们要删除一个数使其最小,如果是删除最大的数,则为15438;而如果是删除最前面的“峰”,则为14389。很明显,我们应选择后者;原因:当我们删除一个数时,不管是删除哪个位置上的,得到的数值的位数都相同的。这时如果要比较最小的,我们可以知道当靠前的位数比其他选择的数更小,就能得到更小的。依次类推,逐步除峰值即为所求。算法:首先将输入的字...原创 2021-11-24 09:08:54 · 4053 阅读 · 0 评论 -
贪心算法-排队接水
话不多说,先看题:分析: 我们先假设这个队伍有n个人,只分析最后一个人的话,他要等待的时间是前面所有人接水时间的总和,因此,我们可以肯定,时间最长的放到最后一个位置可以使得这个队伍的平均等待时间最小。下面在分析倒数第二个人,也可以知道这个人需要是接水时间第二长。依次类推。为了使整个队伍等待时间最小,即将队伍从小到大排列。#include<bits/stdc++.h>using namespace std;typedef struct{ int num; int.原创 2021-11-22 19:35:23 · 537 阅读 · 0 评论 -
贪心算法-小A的糖果盒
题目描述分析:首先判断第一个盒子里的糖果有没有超过最大和x, 如果超过则吃掉部分到达x。然后进行遍历,如果两盒数量之和大于x, 则吃掉后面一个盒子的部分糖果使总和不超过x。为什么是吃掉后一个盒子呢?因为这样可以使的下一轮的两个盒子数量之和更少。#include <bits/stdc++.h>using namespace std;int data[100000000];int main(){ long n, x; //糖盒数量, 最大和 long s.原创 2021-11-22 19:04:01 · 279 阅读 · 0 评论