动态规划
Coder_Suo
这个作者很懒,什么都没留下…
展开
-
矩阵连乘问题
由于矩阵的乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这中计算次序可以用加括号的方式来确定。例如,矩阵连乘积A1A2A3A4可以有5种不同的完全加括号方式: (A1(A2(A3A4))) (A1((A2A3)A4)) ((A1A2)(A3A4)) ((A1(A2A3))A4) (((A1A2)A3)A4)原创 2014-07-15 17:44:39 · 1031 阅读 · 0 评论 -
微策略2012面试题-棋盘寻宝
题目描述:现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角,请设计一个算法使其能够获得最大价值的礼物。输入:输入包含多个测试用例,每个测试用例共有8行8列,第i行的第j列的数字代表了该处棋原创 2014-08-09 20:22:41 · 933 阅读 · 0 评论 -
网易2013笔试题-货币面值
题目描述:小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在游戏中购买各种装备来提升自己。有一天,他突然很想知道这些纸币的组合不能表示的最小面额是多少,请聪明的你来帮助小虎来解决这个财政问题吧。输入:输入包含多个测试用例,每组测试用例的第一行输入一个整数N(N输出:对于每组测试用例,输出一原创 2014-08-09 21:14:19 · 819 阅读 · 0 评论 -
淘宝2013面试题-求首尾相连数组的最大子数组和
题目描述:给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0],…,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选)。原创 2014-08-09 21:33:37 · 592 阅读 · 0 评论 -
微策略2012笔试题-棋盘寻宝加强版
题目描述:现在有一个8*8的棋盘,上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于100),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角。从棋盘的左上角移动到右下角的时候的,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,但是拿到的所有的礼物的价值之和不大于一个限定值limit,请设计一个算原创 2014-08-09 20:40:34 · 893 阅读 · 0 评论 -
最长重复子串—后缀数组
知识点:1. sort 使用时得注明:using namespace std; 或直接打 std::sort() 还得加上 #include 2. qort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数,只要注明 使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针和尾指针; 3. 默认sor转载 2014-07-10 17:28:10 · 722 阅读 · 0 评论 -
最长公共子串
题:给定两个字符串X,Y,求二者最长的公共子串,例如X=[aaaba],Y=[abaa]。二者的最长公共子串为[aba],长度为3。转载 2014-07-10 17:36:31 · 455 阅读 · 0 评论 -
最长公共子序列
一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,子序列BCBA是X和Y的一个LCS,序列BDAB也是。寻找LCS的一种方法是枚举X所有的子序列,然后注意检转载 2014-07-10 17:34:49 · 542 阅读 · 0 评论 -
最长递增子序列
题:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列1,-1,2,-3,4,-5,6,-7中,最长递增子序列长度为4,可以是1,2,4,6,也可以是-1,2,4,6。从后向前分析,很容易想到,第i个元素之前的最长递增子序列的长度要么是1(单独成一个序列),要么就是第i-1个元素之前的最长递增子序列加1,可以有状态方程:LIS[i] = max{1,LIS[k]+1},其转载 2014-07-10 17:23:04 · 530 阅读 · 0 评论 -
连续出现次数最多的子串—后缀数组
求一个字符串中连续出现次数最多的子串 http://blog.csdn.net/ysu108/article/details/7795479讲解 http://blog.csdn.net/imcdragon/article/details/6838565代码 面试宝典P237 源 基本算法描述:例如字符串“abababc”,最多连续出现的为ab转载 2014-07-10 15:39:11 · 579 阅读 · 0 评论 -
背包问题小结
/*=========程序信息========对应题目:01背包之金矿模型使用语言:c++使用编译器:Visual Studio 2005.NET使用算法:动态规划算法运行时间:O(people * n) [people是人数,n是金矿数]作者:贵州大学05级 刘永辉 昵称:SDJL编写时间:2008年8月联系QQ:44561907E-Mail:4456转载 2014-07-15 17:37:53 · 433 阅读 · 0 评论 -
最长不重复子串
对于最长不重复子串,某个当前的字符,如果它与前面的最长不重复子串中的字符没有重复,那么就可以以它为结尾构成新的最长子串;如果有重复,且重复位置在上一个最长子串起始位置之后,那么就与该起始位置之后的稍短的子串构成新的子串或者单独成一个新子串。举个例子:例如字符串“abcdeab”,第二个字符a之前的最长不重复子串是“abcde”,a与最长子串中的字符有重复,但是它与稍短的“bcd转载 2014-07-10 15:46:14 · 501 阅读 · 0 评论 -
连续子数组最大和
http://www.ahathinking.com/archives/tag/%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97求一个数组的相加和最大的连续子数组思路:一直累加,只要大于0,就说明当前的“和”可以继续增大,如果小于0了,说明“之前的最大和”已经不可能继续增大了,就从新开始,resu转载 2014-07-10 15:46:29 · 462 阅读 · 0 评论 -
数塔问题
#include#includeusing namespace std;int m;int max(int,int);void dqta(int **data,int **d);//寻找最优值void fpath(int **data,int **d,int *path);//寻找最优路径int max(int x,int y){ if(x>y)return x;原创 2014-07-15 17:38:16 · 471 阅读 · 0 评论 -
一行文本中的最长单词
http://www.ahathinking.com/archives/tag/%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97转载 2014-07-10 15:35:08 · 554 阅读 · 0 评论 -
寻找单个无序数组中第K小的数字
1、对数组进行排序,然后前K个元素就是需要查找的元素,排序的方法可以采用快速排序,但是我们知道在快速排序中如果已经是有序的数组,采用快速排序的时间复杂度是O(N^2),为了解决这种问题,通常选择随机选择一个数组值pivot作为基准,将数组分为S1 = pivot,这样就能避免快速排序中存在的问题,或者采用随机选择三个元素,然后取中间值作为基准就能避免快速算法的最差时间复杂度,这种方法的转载 2014-08-10 11:10:50 · 1010 阅读 · 0 评论