- 博客(11)
- 收藏
- 关注
原创 总结:动态规划(二)例题解析
解决动态规划问题的关键:找状态,描述状态转移方程 难点:怎么分阶段,怎么找状态今天讲了动态规划的第二组例题1.最大子矩阵给定N和一个NN得矩阵,求该矩阵的一个子矩阵,使子矩阵中所有数字的和最大,求出这个最大值。输入:N,然后是NN个绝对值不超过128的整数输出:最大子矩阵的和问题分析:枚举子矩阵最上和最下的行以及最左和最右的列,但仅这样就已经是O(N^4)的复杂度了。对于N<...
2020-03-25 09:52:35
454
原创 总结:动态规划(一)
今天是动态规划的第一讲,从概念的理解上并不难,这是一种分阶段求最优值的算法,将复杂问题按阶段分成子问题,枚举子问题各种可能情况,从中找到最优值(利用子问题最优解,解决问题最优解)在找出子问题后利用递归与贪心算法不同,贪心算法当前最优解即为问题最优解,而动态规划像要求最优解必须找到各个子问题的最优解主要解决的问题类型:求解最优并且问题可以分为好几个步骤(子问题)问题具有多阶段决策的特征每阶段都有...
2020-03-23 21:12:04
648
原创 贪心问题:主席和学生代表的势力竞争(详解包含整个思路历程)
描述:有n个命令,要通过p个,某主席要在通过的p个中选择k个接受。每个任务有两个值ai,bi,ai表示如果改主席接受该命令,他的头发变灰的数量,bi表示如果主席不接受该命令时,议员不高兴值。对于通过的p个命令,改主席要是议员的不高兴值和最小,在相同的情况下,要是自己的头发变灰的数量尽可能的少。让你求出通过哪n个命令,使得该主席的头发变灰的数量最多,在相同的情况下,输出使议员最不高兴值大的选择...
2020-03-17 21:24:00
276
原创 (贪心算法)最小正整数 删数问题
描述定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?例如: n = 9128456, k = 2, 则生成的新整数最小为12456 输入第一行t, 表示有t组数据;接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。输出t行...
2020-03-15 16:26:59
1374
原创 电池的寿命(贪心算法)
一个游戏机由两节5号电池供电,电池的生产商不同,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时...
2020-03-14 20:22:26
2260
原创 Crossing River(贪心算法)
只有一艘船,能乘2人,船的运行速度为2人中较慢一人的速度,过去后还需一个人把船划回来,问把n个人运到对岸,最少需要多久。输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。输出t行数据,每行1个数,表示每组过河最少时间。思路:由于运送人数,每人过河所用时间差的大小等因素在每个测试样例中不同,所以本题有两种较优方案1.最快的和次快的过河,然后最快的将船划回来;次慢的...
2020-03-14 18:52:47
1344
原创 递归算法解决全排列问题
在数学上曾经学过全排列(permutation)的有关问题,拿数字为例(123的全排列)有123 132213 231312 321(1234的全排列)1: 1234 1243 1324 1342 1423 1432 //黑体部分恰好为剩下三个数的全排列2: 2134 2143 2314 2341 2413 24313: 3124 3142 3214 3241 3412 34214...
2020-03-10 14:49:42
1019
原创 总结:STL—C++标准库string类
STL是c++标准函数库其中string是字符串类型(一种可变长度的字符序列)头文件字符串是对象下面列举string的一些操作(初始化、复制、比较、连接、查询字符串长度、判断字符串是否为空、访问字符串中的单个字符)#include <iostream>#include <string>using namespace std;int main(){string...
2020-03-08 17:13:54
268
原创 总结:递归算法的一般思路
**递归算法**程序直接或间接的调用自身的编程技巧称为递归算法,直接或间接调用自身的函数称为递归函数;它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归问题基本思想:问题层层分析关键:找出递归定义和递归终止条件递归定义:使问题向边界条件转化的规则递归终止条件:所描述问题的最简单的情况,它本身不再使用递归的定义例:求1~100的和递归 fn(n)=n+...
2020-03-01 10:23:25
2743
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人