
算法。动态规划
ARTELE
爱好计算机
展开
-
数据结构---KMP算法(2)
0.简介 KMP中有个next数组,我们从这里逐渐引出KMP算法原理。 1.最长公共前后缀 我们先看最长公共前后缀问题,给定一个字符串s,s为abcdabcd,问这个字符串的最长公共前后最是什么,我们能一眼就看出是abcd,因为abcd.....,和.....abcd,这样一来,就找到了。现在好好理解一下这个找最长公共前后缀问题。 首先,这是一个动态规划问题。假如当前字符串长度为n,那么当长度为n的时候,最长公共前后缀m是什么,取决于长度是n-1时候最长公共前后缀k是多少和第n个字符是否与第k+1个原创 2020-07-02 21:07:35 · 470 阅读 · 0 评论 -
递归专题---[2]开根号
0.简介 开根号,在C++中sqrt就可以解决,实际怎么写呢? 1.推导开根号计算方法 这里采用连分数逼近方法,例如对2开根号可以做如下操作。 公式 然后发现这个式子是可以递归的,就写出如下代码。 double mySqrt(double x) { static int t = 0; return t++==10 ? 0 : 1+((x-1)/(mySqrt(x)+1)); }...原创 2020-02-11 18:34:00 · 1581 阅读 · 0 评论 -
递归专题---[1]进制转换
0.简介 昨晚思考问题的时候,应该是想了好多问题,所以才有了这么个想法,给递归思想做个简单总结吧。 1.进制转换 这里就带着问题一起分析递归思想。首先,进制转换怎么做,10进制转换到2,8,16进制,先从最简单的问题思考,12345,这个数是一个10进制数,将其从10进制转换到10进制,听起来挺奇怪的,这也是分析问题的方法。步骤如下。 1. 12345,首先对10求余数,得到5,然后...原创 2020-02-11 16:06:46 · 1002 阅读 · 0 评论 -
最大子数组和
#include<iostream> #include<vector> #include<algorithm> using namespace std; int maxSubArrSum(vector<int> arr) { if (arr.empty()) return 0; int tMax = arr[0]; int maxSum...原创 2019-10-12 16:18:28 · 189 阅读 · 0 评论 -
动态规划关于最短路径的求法(一)
#include<iostream> #include<vector> #include<queue> using namespace std; vector<int> minPath(vector< vector<int> > graph, int start) { //初始化结果数组 vector<int&g...原创 2019-10-12 16:12:56 · 1431 阅读 · 0 评论 -
动态规划初步认识之二
上次说到的问题是有一个箱子,和一堆东西,里面要放物品,物品有质量和空间和价格,箱子的容量和承载的质量也有限,问怎么能从这些物品中拿出一些物品放到箱子里,使拿出来的总价值最大。 这里我要说的是,这个问题多了一个变量。如果你没看过上一篇,建议你回去看一下,考过的就可以直接来看了。多了一个变量,问题就多了一点难度,不过,解决的问题的答题思想还是不变。 之前的是每次都拿出一个价值最大的原创 2016-11-03 16:34:30 · 534 阅读 · 0 评论 -
杭电OJ---1002
#include<iostream> #include<string> #include<algorithm> using namespace std; string add(string a, string b)//数字长度短的永远在a里存储 { string sum; reverse(a.begin(), a.end());//先将两个字符串反转 re...原创 2018-03-14 17:51:56 · 424 阅读 · 0 评论 -
杭电OJ---1003
#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> FindMaxSum(vector<int>&arr) { vector<int>ret; bool isFirst = 0; int ...原创 2018-03-14 19:05:20 · 367 阅读 · 0 评论