动态规划
lark_ying
清醒时工作,糊涂时读书,独处时思考,烦恼时睡觉~
展开
-
剑指offer 14-剪绳子 C++
题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 思路1:数学归纳法,将number拆分成以3为主,2为辅的一系列和 class Solution { public: int cutRope(int number) { if(num原创 2020-06-02 17:05:07 · 245 阅读 · 0 评论 -
剑指offer 19-正则表达式匹配 C++
题目描述 请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。 思路1:递归,参考剑指offer书上解法。 class Solution { public: bool match(char* str, char* pattern) { if (str == null原创 2020-06-02 16:12:20 · 217 阅读 · 0 评论 -
剑指offer 42-连续子数组的最大和 C++
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) 思路:对于求子串/子数组的最优解问题,优先考虑动态规划 cl原创 2020-06-02 10:58:57 · 120 阅读 · 0 评论