![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 68
从未被模仿一直被超越
这个作者很懒,什么都没留下…
展开
-
最大子段和问题(Maximum Interval Sum)
一、问题描述给定长度为n的整数序列a[1...n](可能有负数),找出其中连续的子段,使它们的和达到最大。例如 [-2,11,-4,13,-5,2] 的最大子段和为20,所在子区间为[2,4].二、解题思路可以转化为动态规划问题,记s[i]为 a[0]到a[i]中包含a[i](即以a[i]为结尾)的最大子段和,则s[i]如何用s[i-1]来表示?s[i] = s[i-1] +原创 2013-05-03 20:29:46 · 687 阅读 · 0 评论 -
最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
一、问题描述求两个字符串的最长公共子串,经典的动态规划问题。算法导论中有详细的讲解。二、解题思路如若两个字符串分别为:X=abcfbc和Y=abfcab。创建一个二维数组c[][],维数分别是两个字符串的长度加一。定义c[i][j]表示Xi和Yj的最长公共子串(LCS).当i或j等于0时,c[i][j]=0. LCS问题的最优子结构存在以下递归式:c[i][j] = 0原创 2013-05-04 16:05:45 · 1066 阅读 · 0 评论 -
输出从矩阵左上角到右下角的所有路径
一、问题描述一个m×n的矩阵,只能从矩阵内部向右或向下走,输出从矩阵左上角到右下角的所有路径。下图即为从1到6的所有路径123456二、解题思路1、数学解法求路径数(1)使用排列组合。因为只能向右走或者向下走,在(m-1)+(n-1)次行走后,才能到达终点,也就是右下角。而在这m+n-2次行走中,有m-1次原创 2013-05-03 22:18:16 · 5292 阅读 · 1 评论 -
求数组中和为给定值的所有组合 (POJ 1564)
一、问题描述给定一个数t,以及n个整数,在这n个数中找到相加和为t的所有组合,例如t=4,n=6,这6个数为[4,3,2,2,1,1],这样输出就有4个不同的组合相加为4: 4,3+1,2+2,and 2+1+1。二、解题思路先将数据按从大到小进行排序(POJ 1564已排序),然后使用回溯法遍历所有可能。注意去掉重复的结果。三、代码实现#includeint ok;//是原创 2013-05-03 19:21:15 · 4422 阅读 · 0 评论 -
欧拉图
昨天做题用到了欧拉图,本来刚看到这个名词我是不知道什么是欧拉图的,wiki了一下发现原来欧拉图就是小学奥数做腻了的"一笔画"问题...图论起源于18世纪,1736年瑞士数学家欧拉(Eular)发表了图论的第一篇论文:哥尼斯堡七桥问题"。 在当时的哥尼斯堡城有一条横贯全市的普雷格尔河,河中的两个岛与两岸用七座桥联结起来,见图(1)。当时那里的居民热衷于一个难题:游人怎样不重转载 2013-05-08 17:00:20 · 879 阅读 · 0 评论 -
最长递增子序列 (Longest Increasing Subsequence, LIS),POJ 2533, POJ 1631
一、问题描述设L=1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列S=k1,ak2,…,akm>,其中k1k2km且ak1k2km。求最大的m值。比如序列(1, 7, 3, 5, 9, 4, 8)的递增子序列包括(1, 7), (3, 4, 8)等等,最长递增子序列为(1, 3, 5, 8),长度为4。二、解题思路(1) 把a1,a2,...,an排序,假原创 2013-05-06 20:08:39 · 538 阅读 · 0 评论