1. 机器人移动 子问题一般形式: 到达网格(i,j)时,机器人可获得的前k大的的k个总分。 子问题最优解定义为: OPT(i,j) 递归表达式: 时间复杂度:T(n)=O(m*n*k) ...
分类:
其他好文 时间:
2019-01-16 15:34:45
阅读次数:
163
归并排序算法是一个非常经典的分治算法,和快速排序有些类似,都是将问题分解成规模更小的子问题,分别解决。但是快速排序的子问题求解完成之后就是最优解,无需进行处理。归并算法需要对分别排序完成的子序列进行合并操作。 合并操作非常简单,定义如下:每次取数组a和b第一个元素中较小者放入新的队列,直到有个队列为 ...
分类:
编程语言 时间:
2018-12-30 22:09:16
阅读次数:
214
贪心算法(Greedy Algorithm) 简介 贪心算法,又名贪婪法,是寻找最优解问题的常用方法,这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。{看着这个名字,贪心,贪婪这两字 ...
分类:
编程语言 时间:
2018-12-28 20:45:29
阅读次数:
262
Problem Description: Input: 要求多组输入。第一行包含一个可选课程的数量整数N(1<=N<=30),以下N行每行包括用空格分隔的两个整数:学分k(0<=k<=2),该课程的上课时间t (12<=t<=23) Input: Output: 输出最优解时的最高学分。 Outpu ...
分类:
其他好文 时间:
2018-12-24 16:25:34
阅读次数:
142
贪心算法具有最优子问题结构,它的特点是“短视”,每次选择对当前局面最有利的决策,来一步步获得最优解。 我个人认为,贪心不是一个具体的方法,而是一类方法,贪心算法的关键不在于想到,而在于正确性的证明。要证明一个贪心算法是正确的,需要证明我们可以把一个最优解逐步转化为我们用贪心算法所得到的解,而解不会更 ...
分类:
编程语言 时间:
2018-12-20 22:47:00
阅读次数:
268
这道题就是旅行售货员问题的同类 第一个判断条件是访问到最后一个人时与当前最优解进行比较 第二个是如果当前解大于当前最优解则不需要继续访问,可以减少时间(做的时候是>号,发现>=可能更好) 第三个判断当前任务是否被分配。 第n层表示第n个人的选择 回溯法的精髓在于剪枝,那就需要约束函数或限界函数去实现 ...
分类:
其他好文 时间:
2018-12-20 20:26:12
阅读次数:
173
这题真不错,需要三维dp,转移方程为我好久才想出来。 然后发现数组开不下…… emmm…… 于是乎我看了题解,才想起来我会滚动数组,,,qwq 这道题的关键就是,对于这个第 i 位是和上一个合并还是单独新开一个串,那么对于上述两种情况,就要对应必须选第 i 个或者第 i 个可选可不选(即现有最优解) ...
分类:
其他好文 时间:
2018-12-16 11:05:02
阅读次数:
102
Java 算法(一)贪心算法 __数据结构与算法目录()__ 一、贪心算法 什么是贪心算法?是指在对问题进行求解时,总是做出当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所得出的结果仅仅是某种意义上的局部最优解。 __因此贪心算法不会对所有问题都能得到整体最优解,但对于很多问题能产生整体最 ...
分类:
编程语言 时间:
2018-12-15 11:48:28
阅读次数:
231
2018-11-14 18:14:15 二分搜索法,是通过不断缩小解的可能存在范围,从而求得问题最优解的方法。在程序设计竞赛中,经常会看到二分搜索法和其他算法相结合的题目。接下来,给大家介绍几种经典的二分搜索法的问题。 一、从有序数组中查找某个值 1、lowerBound 问题描述: 给定长度为n的 ...
分类:
其他好文 时间:
2018-12-08 16:13:33
阅读次数:
139
参考代码可见: "https://github.com/dashnowords/blogs/tree/master/Structure/GreedyAlogrithm" 一.贪心算法 属于比较简单的算法,它总是会选择当下最优解,而不去考虑单次递归时是否会对未来造成影响,也就是说不考虑得到的解是否是 ...
分类:
编程语言 时间:
2018-12-06 10:18:26
阅读次数:
175