动态规划
文章平均质量分 88
PG13okc
一个不会编程的菜鸟!
展开
-
动态规划---例题2.最长公共子序列问题
本题与力扣主站1143题相同.一.问题描述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1, x2,…, xm>,则另一序列Z=<z1, z2,…, zk>是X的子序列是指存在一个严格递增的下标序列 <i1, i2,…, ik>,使得对于所有j=1,2,…,k有例如,序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子序列,相应的递增下标序列为<2, 3, 5, 7>。原创 2021-10-31 00:00:00 · 15464 阅读 · 2 评论 -
动态规划---例题1.矩阵连乘问题
一.问题描述矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数.若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵.其标准计算公式为:计算C=AB总共需要pqr次的数乘.给定n个矩阵{A1,A2,…,An}.其中Ai与Ai+1是可乘的,i=1,2,…,n-1.要求计算出这n个矩阵的连乘积A1A2…An.二.解题思路矩阵乘法满足结合律,故连乘积的计算可以有许多不同的计算次序.这种计算次序可以用加括号的方式来确定.若一个矩阵连乘积的计算次序已完全确定,也就是说该连乘积已原创 2021-10-29 00:00:00 · 5637 阅读 · 0 评论 -
动态规划---例题7.图像压缩
一.题目描述数字化图像是n*n的像素阵列. 假定每个像素有一个0~255的灰度值, 因此存储一个像素至多需8位.为了减少存储空间, 采用变长模式, 即不同像素用不同位数来存储, 步骤如下:图像线性化:将nn维图像转换为1n2向量 {p1,p2,…pn^2}分段: 将像素分成连续的m段s1,s2,…sm,使每段中的像素存储位数相同. 每个段是相邻像素的集合且每段最多含256个像素, 若相同位数的像素超过 256个的话, 则用两个以上段表示。创建三个表l: l[i]存放第i段长度, 表中各项均为8原创 2021-10-31 23:02:39 · 5054 阅读 · 1 评论 -
动态规划---例题6.多边形游戏
一.题目描述多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。游戏第1步,将一条边删除。随后n-1步按以下方式操作:(1)选择一条边E以及由E连接着的2个顶点V1和V2;(2)用一个新的顶点取代边E以及由E连接着的2个顶点V1和V2。将由顶点V1和V2的整数值通过边E上的运算得到的结果赋予新顶点。最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。问题:对于给定的多边形,原创 2021-11-02 09:00:00 · 2729 阅读 · 0 评论 -
动态规划---例题5.凸多边形最优三角剖分问题
一.题目描述通常,用多边形顶点的序列来表示一个凸多边形,即P=<v0 ,v1 ,… ,vn-1>表示具有n条边v0v1,v1v2,… ,vn-1vn的一个凸多边形,其中,约定v0 = vn 。若vi与vj是多边形上不相邻的两个顶点,则线段vivj称为多边形的一条弦。弦将多边形分割成凸的两个子多边形<vi ,vi+1 ,… ,vj>和<vj ,vj+1 ,… ,vi>。多边形的三角剖分是一个将多边形分割成互不重迭的三角形的弦的集合T。如上图为一个凸多边形的两个不同原创 2021-11-01 08:30:00 · 3730 阅读 · 0 评论 -
动态规划---例题4.最大子矩阵和问题
本题与力扣面试题 17.24. 最大子矩阵相同.一.问题描述给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。二.解题思路如果有看过经典例题3 — 最大子段和,就会很快知道该问题的突破口.我们知道,最大子段和是针对一维数组而言,可以找到该数组中连续子数组之和最大的那一个.原创 2021-10-31 22:44:50 · 532 阅读 · 0 评论 -
动态规划---例题3.最大子段和问题
本题与力扣主站53题 — 最大子序和相同.一.问题描述给定n个整数(可能有负数)组成的序列a1,a2,…an, 求子段和ai+ai+1+…+aj的最大值。当所有整数均小于零时,定义其子段和为0。最大值为max{0, maxΣak}例:(-2, 11, -4, 13, -5, -2)的最大子段和为20二.解题思路1.朴素暴力我们使用数组a存放n个整数,sum、besti、bestj分别存放最大子段和及其始末下标。时间复杂度: T(n) = O(n^3)int MaxSum(int n, i原创 2021-10-31 22:38:43 · 1979 阅读 · 0 评论