动态规划
文章平均质量分 63
楠c
这个作者很懒,什么都没留下…
展开
-
动态规划练习
乘积最大子数组普通解法class Solution {public: int maxProduct(vector<int>& nums) { int n=nums.size(); vector<int> maxdp(n,0); vector<int> mindp(n,0); maxdp[0]=nums[0]; maxdp[0]=nums[0]; for(int原创 2021-07-02 11:27:42 · 133 阅读 · 0 评论 -
分割回文串,编辑距离,不同子序列
目录分割回文串普通解法优化时间编辑距离普通解法不同子序列普通解法优化空间分割回文串普通解法class Solution {private: //O(n^3)差点超时 bool isPal(const string& s,int left,int right) { while(left<right) { if(s[left]!=s[right]) return false;原创 2021-06-30 10:30:21 · 161 阅读 · 3 评论 -
0-1背包问题
有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值.问最多能装入背包的总价值是多大?举个用例,画图分析普通情况class Solution {public: int backPackII(int m, vector<int> &A, vector<int> &V) { int n=A.size(); vector<vector<int>> dp原创 2021-06-30 09:59:04 · 125 阅读 · 0 评论 -
动态规划(Dynamic Programming)
Dynamic Programming动态规划是分治思想的延伸,就像之前的递归一样,大问题分解成小问题。但是递归有个不好的地方,对于复杂问题时间,空间复杂度十分的高,结果也不会保存。比如:快速排序,没有三数取中优化的话,会导致栈溢出。所以动态规划一般都是采用非递归,而且结果可以保存,这就是他们本质的区别。动态规划特点:把原来的问题分解成几个相似的子问题所有的子问题只需解决一次储存子问题的解动态规划的本质,是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)所以动规问题原创 2021-06-30 09:44:49 · 294 阅读 · 6 评论