1. 动态规划,使用一个数组保存当前的最大递增子序列长度,时间复杂度为O(N^2)
# include
# include
# include
using namespace std;
int longestsub(int a[],int n)
{
int *dis=(int *)malloc((n+1)*sizeof(int));
dis[0]=1;
int i,j;
for(...
分类:
其他好文 时间:
2014-08-09 13:30:07
阅读次数:
221
《算法之道》精华 算法设计部分
本书作者绉恒明,作者另有一本书《数据结构之弦》,以及《操作系统之哲学原理》都是很好的书这本书可以算得上是深入浅出,文笔很好,作者添加了很多自己的思考本文仅包括算法设计部分,算法分析略去,并没有严格按照章节顺序来记录
附录 算法随想
有人喜欢遍历,希望踏遍千山万水,人生丰富多彩;有人一生贪婪,眼界不宽,及时行乐;有人注定穷搜,辛辛苦苦,收获有限;有人善用...
分类:
其他好文 时间:
2014-08-09 11:37:07
阅读次数:
280
问题描述:给定n种物品和一背包。物品i的重量是w[i],其价值为v[i],背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
分析:对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1。设物品i的装入状态为xi,xi∈ (0,1),此问题称为0-1背包问题。
数据:物品个数n=5,物品重量w[5]={2,2,6,5,4},物品价值v[5]={6...
分类:
其他好文 时间:
2014-08-09 09:07:47
阅读次数:
294
今天在网上看到的这道题目:一个有N个元素的整型数组arr,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组当然有很多子数组,求子数组之和的最大值。例如:[0,-2,3,5,-1,2]应返回9,[-9,-2,-3,-5,-3]应返回-2。开始感觉貌似也没有那么难,就直接想循环遍历+动态规划的...
分类:
其他好文 时间:
2014-08-08 21:14:56
阅读次数:
273
最长公共子序列问题以及背包问题都是DP(动态规划)算法的经典题目,值得深度挖掘以致了解DP算法思想。问题如下:
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(L...
分类:
其他好文 时间:
2014-08-08 16:02:16
阅读次数:
200
一、概念:动态规划(Dynamic programming,DP)是一种在数学,科学计算和经济学中使用的,通过把原问题分解成相对简单的子问题的方式求解复杂问题。DP常常适用于有重叠子问题和最优子结构性质的问题,DP所消耗的时间往往小于朴素解法(拿空间换时间)。 动态规划背后色思想很简单那...
分类:
其他好文 时间:
2014-08-08 15:31:26
阅读次数:
181
题意 linda在一个幼儿园当老师 他要把n个学生排成一列 使只有m对学生能够讲话 当两个学生相邻或者他们之间的所有人都比他们矮时 他们就能够讲话
每个学生的身高都不同
令d[i][j]表示把i个学生排成一列使j对学生能够讲话的方法数
可以把i个学生分成i-1个学生和一个最矮的学生 把这个学生放在i-1个学生中任意两个学生之间都不会影响原来的结果 但是能讲话的学生对数增加了2 有i-2种放法
或者把这个最矮的学生放在两边 这样能讲话的对数只增加了1 有两种放法
所以有转移方程d[...
分类:
其他好文 时间:
2014-08-08 09:39:05
阅读次数:
265
poj 1836 Alignmenthttp://poj.org/problem?id=1836题意:有士兵n个,根据编号排为一列,但是身高不一,现在要求去掉几个人,使得剩下的每一个人可以向左或向右看到队头。问:至少去掉的士兵数。dp动态规划 之 双向LIS问题 1 /* 2 Problem: .....
分类:
其他好文 时间:
2014-08-07 22:33:28
阅读次数:
212
问题定义什么是插头DP在一个n*m的棋盘上(n与m很小),求:有多少种不同的回路数用1条回路经过所有点的方案数用1条回路经过部分点的方案数1条路径上的权值和最大的这一类问题,通常可以用插头DP来解决。这类问题通常很明显,但代码量大又容易出错,有时TLE有时MLE。什么是基于状态压缩的动态规划基于状态...
分类:
其他好文 时间:
2014-08-07 21:39:00
阅读次数:
260