这几天一直再看,觉得看懂了一些,先记下来。动态规划动态规划是运筹学的一个方向,就是把多级最优化问题分解成一系列的单阶问题。在不断增加的过程中,不断的计算当前问题的最优解。一般分为如下四个部分:
线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;
区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;
树形动规:贪吃的九头龙,二分查找树,聚会的欢乐,数字三角形等;
背包问题:01背包问题...
分类:
编程语言 时间:
2015-04-27 02:07:23
阅读次数:
427
题目:LeetCode 003 Longest Substring Without Repeating Characters题意:给一个字符串,找到一个没有重复字符的最长子串。样例:”bbbbb” 返回”b”的长度1;”abcabcbb”返回”abc”的长度3。思路:动态规划。dp[i]表示以第i个...
分类:
其他好文 时间:
2015-04-26 18:15:18
阅读次数:
117
动态规划算法package algorithm;public class T7_21 { public static void main(String[] args){ int s[] = {2,3,4,5}; int v[] = {3,4,5,7}; ...
分类:
编程语言 时间:
2015-04-26 13:40:07
阅读次数:
131
动态规划算法#include #include #include #include using namespace std;#define MAXSTRLEN 20int Lcs(char x[], char y[], int path[][MAXSTRLEN])//求序列x和y的最长公共子序列,p...
分类:
编程语言 时间:
2015-04-26 12:13:39
阅读次数:
118
一、题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] |...
分类:
编程语言 时间:
2015-04-26 10:44:06
阅读次数:
138
今天是故意想用动态规划把题目写出来,虽然超时了,但我知道思想,明天再把优化算法写出来。
最长回文子串
时间限制:1000ms
单点时限:1000ms
内存限制:64MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho...
分类:
其他好文 时间:
2015-04-26 09:17:25
阅读次数:
121
题目大意:
给你N个城市,参观路线为1~2~3~4~5~…~N~1。可以从任何一座城市开始参观。每座城市提供的
生活费和需要的花费都不同,问:最多能参观多少个城市。
思路:
因为能形成循环,所以在原有数据的后边再接上1~N的数据。然后用动态规划来做。状态为:当上一
个城市剩下的钱不为负(即还未结束旅游),如果上一个城市剩下的钱加上当前城市的钱大于当前的生活
费,那么dp[i] = dp[i-1] + 1,更新剩下的钱,如果不够旅游了,就将剩下的钱归为0,从当前点开始
旅游,计算最大的dp[i],得到的就是...
分类:
其他好文 时间:
2015-04-25 22:51:07
阅读次数:
165
题目描述动态规划的要素是“最优子结构”和“重叠子问题”。解决问题最重要的是确定“状态”的含义和“转移方程”,以及最终解的状态表示。对于本题而言:状态 —— V[i, j]这个状态表示从顶(第一层第一个元素)到第i层第j个元素能达到的最大值转移方程 —— V[i, j] = max(V[i-1, j-...
分类:
其他好文 时间:
2015-04-25 22:28:28
阅读次数:
187
和nyoj613(免费馅饼)一样的原理 从下 网上依次遍历 存贮最大值
#include
#include
using namespace std;
int main()
{
int n,num[105][105]={0};
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
scanf("%d",&num[i]...
分类:
其他好文 时间:
2015-04-25 21:18:00
阅读次数:
148
第一次直接计算的 超时了。后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面
#include
int main()
{
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day;
long long b[9605]={0},sum=0;
for(int i=1600;i<9600;i++)
{
...
分类:
其他好文 时间:
2015-04-25 16:41:00
阅读次数:
156