0-1背包问题:
描述:给定n中物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为c,问应如何选择装入背包中的物品,使得装入背包中的物品总价值最大?
0-1背包问题是一个特殊的整数规划问题。 设所给0-1背包问题的子问题; 其最优值为m(i,j),即m(...
分类:
其他好文 时间:
2014-07-22 23:00:35
阅读次数:
319
Problem 2170 花生的序列
Accept: 41 Submit: 127
Time Limit: 3000 mSec Memory Limit : 32768 KB
Problem Description
“我需要一个案件!!!”,没有案件卷福快疯了。花生不忍心看卷福这个样子,他决定帮卷福找点事情做。
花生拿了两个长度为N的相同的序列,序列都为WB...
分类:
其他好文 时间:
2014-05-02 19:52:00
阅读次数:
332
这道题,采用动态规划算法。from top to
down,把到每个节点的最小路径和都求出来。下面是AC代码: 1 /** 2 * Given a triangle, find the minimum path
sum from top to bottom. 3 * Each ...
分类:
其他好文 时间:
2014-05-02 12:19:23
阅读次数:
382
题目描述:
描述
司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:
如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的...
分类:
其他好文 时间:
2014-04-30 22:32:38
阅读次数:
398
很好的一道动态规划法题目。
注意:
1 行列别搞错了,要很细心一点一点对起来
2 要以边线思考,不要以方块来计算, N*M个方块就成了(N+1)*(M+1)条交叉线了,最下面和最左边的线就方便初始化了
3 注意C++的四舍五入的方法
动态规划的状态转移方程:
if (A[y][x]) B[x] = t + 1.414213562;
else B[x] = min(B[x-1], B[x]) + 1 ;
A[y][x]表示是否有对角线,有对角线必定是走对角线的。...
分类:
其他好文 时间:
2014-04-30 22:21:38
阅读次数:
369
1Floyd-Warshall算法
考虑用动态规划的方法,只使用顶点0~k和i,j的情况下,记i到j的最短路径为d[k][i][j]。当k=0时,只考虑i和j,即d[0][i][j]=cost[i][j].然后我们就开始讨论从k到k+1是怎样变化的。
对于顶点0~k的i到j的最短路,如果这条路径不经过第k个顶点,那么d[k][i][j]=d[k-1][i][j]。当经过第k个顶点时,d[k][...
分类:
其他好文 时间:
2014-04-30 22:16:39
阅读次数:
389
原题链接: http://oj.leetcode.com/problems/unique-binary-search-trees/
这道题要求可行的二叉查找树的数量,其实二叉查找树可以任意取根,只要满足中序遍历有序的要求就可以。从处理子问题的角度来看,选取一个结点为根,就把结点切成左右子树,以这个结点为根的可行二叉树数量就是左右子树可行二叉树数量的乘积,所以总的数量是将以所有结点为根的可行结果...
分类:
其他好文 时间:
2014-04-30 22:12:39
阅读次数:
244
本文出自:http://blog.csdn.net/svitter
题意:青蛙绕圈跳, 初始位置X,Y,速度M,N,方向相反,L为模。最后能否相遇?相遇时间是什么?
本题目为扩展欧几里德,扩展欧几里德介绍:
关于扩展欧几里德方程
ax + by = c
(1)
可以用来求是否有解。即是否存在c满足这个方程。
exgcd(a, b, x, y)是用来求ax + by =...
分类:
其他好文 时间:
2014-04-29 13:38:21
阅读次数:
258
本文出自:http://blog.csdn.net/svitter/
题意:三种苹果,每种都有对应的Size,Value,给你一个背包空间,求最大的价值。
本题目的关键就在于非常大的背包空间
依据indicates the size (1 <=
100) 我们可以考虑在1000000(100^3)之外的空间放性价比最高的苹果。为什么时100^3?
要知道背包如果正好填满,而填满...
分类:
移动开发 时间:
2014-04-29 13:27:21
阅读次数:
436
最长上升子序列:
有两种基本方法:两个时间复杂度分别为O(n^2)和O(nlogn)。
O(n^2)
容易的出动态规划的递推公式dp[i]=max(dp[j])+1 j=1,2...i-1,dp[i]是以元素i结尾的最长子序列个数。
在O(n^2)的最长上升子序列中可以通过记录每个元素前缀元素位置的方式来得到整个的最长上升子序列。
代码:int LISOn2(int a[],int to...
分类:
其他好文 时间:
2014-04-29 13:24:22
阅读次数:
314