![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 74
qq_43109978
这个作者很懒,什么都没留下…
展开
-
序列类动态规划
相比矩阵类动态规划,序列类动态规划最大的不同在于,对于第 i 个位置的状态分析,它不仅仅需要考虑当前位置的状态,还需要考虑前面 i – 1 个位置的状态最长上升子序列解题思路:问题拆解:求前n个数的最长子序列,可以先求前n-1个数的最长子序列的长度,但是这样不具有后效性(n用不上n-1的答案),可以求以n为终点的最长上升子序列的长度,这样n-1的问题解决了,n的问题也就解决了...原创 2020-01-26 12:24:10 · 159 阅读 · 0 评论 -
矩阵类动态规划
理论解析动态规划其实就是记住之前问题的答案,然后利用之前问题的答案来分析并解决当前问题,这里面有两个非常重要的步骤,就是拆解问题和定义状态。这次来针对具体的一类动态规划问题,矩阵类动态规划问题,来看看针对这一类问题的思路和注意点。矩阵类动态规划,也可以叫做坐标类动态规划,一般这类问题都会给你一个矩阵,矩阵里面有着一些信息,然后你需要根据这些信息求解问题。对于矩阵类的动态规划,...原创 2020-01-23 15:38:20 · 688 阅读 · 0 评论 -
动态规划
什么是动态规划?用一句话解释动态规划就是 “记住你之前做过的事”,如果更准确些,其实是 “记住你之前得到的答案”。是通过空间换取时间的算法举个大家工作中经常遇到的例子。在软件开发中,大家经常会遇到一些系统配置的问题,配置不对,系统就会报错,这个时候一般都会去 Google 或者是查阅相关的文档,花了一定的时间将配置修改好。过了一段时间,去到另一个系统,遇到类似的问题,这...原创 2020-01-20 19:40:46 · 141 阅读 · 0 评论 -
分治
分治的基本概念把一个任务,分成形式和原任务相同,但规模更小的 几个部分任务(通常是两个部分),分别完成,或只 需要选一部完成。然后再处理完成后的这一个或几个 部分的结果,实现整个任务的完成 生活实例 – 称假币。8 – 8 一称,发现无假币,或假币所在的那8枚 4 – 4 一称 2 – 2 一称 1 – 1 一称 归并排序数组排序任务可以如下完成:把前一半排序...原创 2020-01-20 09:17:47 · 133 阅读 · 0 评论 -
排序初步
简单排序如果有N个元素需要排序,那么首先从N个元素中找到最小的那个(称为第0 小的)放在第0个位子上(和原来的第0个位子上的元素交换位置),然后再从剩 下的N-1个元素中找到最小的放在第1个位子上,然后再从剩下的N-2个元素 中找到最小的放在第2个位子上……直到所有的元素都就位。swap函数在标准库中,在c++11中,直接在std中,老标准要include algorithm总共执行了n...原创 2020-01-19 08:59:19 · 188 阅读 · 0 评论 -
二分算法
程序或算法的时间复杂度一个程序或算法的时间效率,也称“时间复杂度”,有时简称“复杂度” 复杂度常用大的字母O和小写字母n来表示,比如O(n),O(n2)等。n代表问题 的规模 时间复杂度是用算法运行过程中,某种时间固定的操作需要被执行的次数和n 的关系来度量的。在无序数列中查找某个数,复杂度是O(n) 计算复杂度的时候,只统计执行次数最多的(n足够大时)那种固定操作的次数 。比如某...原创 2020-01-18 11:00:51 · 110 阅读 · 0 评论 -
递归
递归的基本概念 一个函数调用其自身,就是递归 递归需要终止条件,否则就会无穷递归导致程序无法终止甚至崩溃 递归和普通函数 调用一样是通过 栈实现的。每调用一次,栈就像上长一层 求阶乘#include <iostream>#include <cstdio>using namespace std;int Fact(int n)...原创 2020-01-16 11:55:08 · 187 阅读 · 0 评论 -
枚举
定义逐个尝试答案例题1:完美立方解题思路:四重循环枚举a,b,c,d,a在最外边,d在最里边,每一层都是从小到大枚举,a范围是[2,N],b范围是[2,a-1],c范围是[b,a-1],d范围是[c,a-1]#include <iostream>#include <cstdio>using namespace std;int main(){...原创 2020-01-14 19:37:57 · 149 阅读 · 0 评论