动态
ggmshm
前端慢慢爬
展开
-
DP————1004
题目:题意:思路:感想:代码:原创 2016-05-02 11:09:01 · 394 阅读 · 0 评论 -
DP————1017
题目:题意:思路:感想:代码:原创 2016-05-14 12:04:01 · 196 阅读 · 0 评论 -
DP————1003
题目:Super Jumping题意:一个棋盘和一些旗子,棋子有大小的整数数字或者开始或者结束,在整个过程中不能后退,且整数比递 增,求最大数和思路:类似最大递增子段,只不过这里求的是到第i个元素时,其最大递增子段的和dp[i]。输出最大的那个值k。感想:sum[j]=max{sum[i]}+a[j]; 其中,0代码:#原创 2016-05-14 10:48:31 · 153 阅读 · 0 评论 -
DP————1014
题目:直线分割平面题意:我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部 分,两条折线最多可以将平面分成7部分,具体如下所示思路:当n = 1 时,s=2; 当n = 2 时,s=7; 当n = 3 时,s=16;原创 2016-05-02 17:11:16 · 170 阅读 · 0 评论 -
DP————1013
题目:母牛数目题意:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?思路:第n年的母牛数与第n -1 年和第n - 3年的母牛数有关感想:找到规律,小母牛要在第三年才会生小母牛.........代码:#includeusing namespace std;int f(int n){原创 2016-05-02 17:01:00 · 214 阅读 · 0 评论 -
DP————1012
题目:铺放骨牌题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,思路:当n=1时,m=1; 当n=2时,m=2; 当n=3时,m=3; 当n=4时,m=5; 综上,a [ n ] = a [ n -原创 2016-05-02 17:00:22 · 210 阅读 · 0 评论 -
DP———1006
题目:数塔问题题意:要求从顶层走到底层,每一步只能走到相邻的结点,求经过的结点的最大数字之和,输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 思路:在最后一层开始,代码:#include#include#include#includeusing namespace std;int main(){ int原创 2016-05-02 16:53:59 · 166 阅读 · 0 评论 -
DP————1011
题目:蜜蜂爬行题意:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数 思路:a到b的路线数=到b-1的路线数+b-2的路线数代码:#include #include#includeusing namespace std;int main(){ int N,a,b;原创 2016-05-02 16:43:09 · 247 阅读 · 0 评论 -
DP————1016
题目:走方格题意:在一无限大的二维平面中,我们做如下假设:每次只能移动一格;不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向 上走,但是不可以向下走);的格子立即塌陷无法再走第二次;求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案思路:当m=1时,n=3; 当m=2时,n=7;原创 2016-05-02 16:28:08 · 190 阅读 · 0 评论 -
DP————1015
题目:十进制转二进制题意:给一个十进制数n,将它转为2进制并输出思路:利用除2取余为二进制值,除2的值为下一轮的新计算值感想:当值为0时退出循环代码:#include #include#include#includeusing namespace std;int main(){ long long int a,i; int n[100原创 2016-05-02 16:03:44 · 195 阅读 · 0 评论 -
DP————1010
题目:走楼梯题意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法思路:M=1时,N=1; M=2时,N=2; M=3时,N=3; M=4时,N=5; 综上 m [ i ] = m [ i - 1 ] + m [ i - 2 ];感想:观察找到规原创 2016-05-02 15:46:17 · 220 阅读 · 0 评论 -
DP———1002
题目:最长公共子序列题意:给出两个序列X,Z,两者是否存在严格递增序列。思路:LCS问题,找到的最大长度序列的共同的x和y代码:#include #include#include#include#includeusing namespace std;int dp[1005][1005];int main(){ int i,j; c原创 2016-04-20 09:53:07 · 210 阅读 · 0 评论 -
DP———1001
题目:最大和题意:给出数字T,T代表测试的数据组,然后给出n,n代表每组数据个数,求出每组数据的最大和的子序列,输出最大和还有子序列的起始和结束位置。思路:问题是求出每组数据的最大和的子序列,需要注意的是子序列 起始结束位置的变化 。代码:#include #include using namespace std;int main(){int T,n,i,p,t;原创 2016-04-20 09:25:19 · 209 阅读 · 0 评论 -
DP————1005
题目:The IQ of a monkey题意:给定数目的木块,木块可以叠加,但是相同底面积的的木块不能放在一起,因为猴子需要一定的面积从一个木快到另一个木块,问在给定的木块中可以确 定的最大的塔高,木块的数量无限。思路:给定的一组长宽高(x,y,z)中,高度可以是x,y,z中的任意一个,所以一种木块其实是三种木块。 先按照长相等宽的放在前原创 2016-05-02 12:02:40 · 330 阅读 · 0 评论 -
DP总结
DP简单dp的状态比较容易表示,转移方程也比较好想。通常包括四种类型:递推,背包,LIS(最长递增序列),LCS(最长公共子序列)递推一般形式比较单一,从前往后,分类枚举就行。其中背包又分为01背包,分组背包,完全背包,多重背包。01背包:状态方程:01背包体积要从v---0dp[i原创 2016-06-02 20:05:53 · 271 阅读 · 0 评论