摘要: 题目是给定一个三角形,求最小的路径和,每一步只能移动到它的相邻列,这条规则要看清楚,意思是第i行的第j列只能移动到第 i + 1 行的第j列或j + 1列。这题也比较简单,依然是DP的思路,保存每一行每一列的从顶端到该元素的最小和即可。题目下面的这个提示不是很理解:Note:Bonus point if you are able to do this using onlyO(n) extra space, wherenis the total number of rows in the triangle.按照我上面的方法根本就不需要额外的空间,直接在给的三角形上从上到下逐步更新每个元素的最小和 阅读全文
posted @ 2013-08-22 09:53 Exio 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 还是回文数,不过这题是要找出所有可能的划分方法,没有太大的难度,主要是要对细节思考细心一点。我的解法:依然是DP的思想,保存每一个位置的所有划分方法,每一个合法的划分是一个字符串数组vector subvec, 每个位置的划分方法则是所有不同合法划分组成的数组vector> res,则保存所有位置的可划分的解的是各个位置的划分方法组成的数组vector>> parvec;DP的公式推导:首先在已知s[0..j]的所有划分情况时,j + 1的划分方法等于所有可以j + 1构成回文的位置k(k >= 0 and k > partition(string s) { 4 阅读全文
posted @ 2013-08-21 23:01 Exio 阅读(246) 评论(0) 推荐(0) 编辑
摘要: LeetCode OJ上的第一题,很简单的DP,之前轻松就过了小数据,大数据的时候超时了,后来在网上看到说还需要优化一下Palindrome的判断过程,于是用一个二维数据保存字符串中任意两个位置i,j是否是回文的状态。不过遇到两个问题折腾了两个小时:1.函数调用的时候字符串参数必须用引用,值传递的话会memory out limit;2.声明在函数外部的vector> palindrome,在插入元素之前要先调用clear清空;不然会出现莫名其妙的WA或者Runtime Error;代码如下: 1 class Solution { 2 public: 3 vector> palin 阅读全文
posted @ 2013-08-20 01:28 Exio 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 竞价题目如下:时间限制: 1000ms 内存限制: 256MB描述Alice和Bob都要向同一个商人购买钻石。商人手中有 N 颗钻石,他会将它们一颗颗地卖给他们,Alice和Bob通过竞价的方式来决定钻石的归属。具体的过程如下:商人首先指定其中一个人开始报价,之后两人轮流报价,要求是一定要比对方报的价格更高。任何时候,如果一个人不愿出价或者出不起价钱时,可以宣布弃权,则对手以最后一次报的价格将钻石买下。当然,如果两人都没钱,商人是不会卖钻石的。首次报价至少为 1,并且只能报整数的价钱。Alice和Bob特别爱攀比,因此他们都希望能比对方买到更多的钻石。Alice和Bob各自带了 CA 和 CB 阅读全文
posted @ 2013-04-13 23:33 Exio 阅读(1366) 评论(6) 推荐(0) 编辑
摘要: 技术从这里开始... 阅读全文
posted @ 2012-09-24 00:54 Exio 阅读(141) 评论(0) 推荐(0) 编辑