思路:根据标签里的动态规划,很容易想到判断[x,y]处是不是回文,就要先判断[x+1,y-1]是不是回文(这里要注意偶数问题)。 用一个二维数组p[][]记录从start处开始到end处结束的字符串是否为回文,存值为0代表不是回文或没遍历过,为1代表是回文。 那么这里其实重难点在于判定赋值为1的条件 ...
分类:
其他好文 时间:
2019-12-11 21:14:53
阅读次数:
72
动态规划(递归)解题步骤: 1.将原问题拆分成子问题。 2.确认状态。 3.确认边界状态(初始条件)。 4.状态转移方程。 题一:【斐波那契数列】 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 分析:斐波那契数列:{0 1 1 2 ...
分类:
其他好文 时间:
2019-12-11 11:23:46
阅读次数:
93
"跳跃游戏" 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 思路 根据题目意思,最大跳跃距离,说明可以跳0 nums[i]的距离 可以把跳跃看成走nums[i]步,如果能走到下一位置则可以~~加油~~获取更多 ...
分类:
其他好文 时间:
2019-12-09 23:00:52
阅读次数:
97
这种类型问题三大要素:总重量、每件物品重量、每件物品价值,问最终能够塞进背包中的价值最大是多少?应该怎么选择物品? 当然也不一定是这些,例如上节所说的矿工挖矿:总人数、挖每座矿的人数、每座矿的金子数。 也就是说,只要出现了这三大要素,都可以视为0,1背包问题(物品不可拆分) 动态规划三要素:边界、最 ...
分类:
其他好文 时间:
2019-12-08 01:26:09
阅读次数:
118
题目描述: 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为O(n*sizeof( ...
分类:
其他好文 时间:
2019-12-07 14:39:23
阅读次数:
89
一、题目要求 二、题目背景 动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往 ...
分类:
其他好文 时间:
2019-12-06 11:46:37
阅读次数:
91
问题本质是从左上角到右下角的两条不相交路劲,权值最大 1--动态规划(二进程动态规划) 或者 网格图费用流 确定好转移状态吧 #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #define maxn ...
分类:
其他好文 时间:
2019-12-05 13:14:25
阅读次数:
84
[TOC] 一、动态规划 动态规划,无非就是利用 历史记录 ,来避免我们的重复计算。而这些 历史记录 ,我们得需要一些 变量 来保存,一般是用 一维数组 或者 二维数组 来保存。下面我们先来讲下做动态规划题很重要的三个步骤, 如果你听不懂,也没关系,下面会有很多例题讲解,估计你就懂了。之所以不配合例 ...
分类:
其他好文 时间:
2019-12-05 13:11:04
阅读次数:
78
一、简介 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Flyod)算法均是用于求解有向图从一点到另外一个点最短路径。 二、Dijkstra 迪杰斯特拉算法也是图论中的明星算法,主要是其采用的动态规划思想,使其在数据结构、算法、离散数学乃至运筹学中都扮演重要的角色。 ...
分类:
编程语言 时间:
2019-12-05 01:19:39
阅读次数:
113
立志要熟练动态规划,加油! 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。思路:设dp[l][r]表示s[l……r]是否回文,枚举右边界r,然后从0枚举l一直到r,dp[r][l] = s[r]==s[l] && (r-1-l-1+1<=1 || ...
分类:
其他好文 时间:
2019-12-05 01:04:49
阅读次数:
111