neu dp b题 hdu1087

原创 2016年08月29日 17:37:25

第一次写题解,希望能从中学习
题意:
给一列数,求其上升子序列中,所有数之和最大的;
答案只要这个和就可以了;

思考轨迹,
拿到这个题首先想到以前做过的最长上升子序列和最大连续子序列和这两道题;

对于问题子结构的刻画:
和是多少? //这是要得到最优的解
原数列有哪些?
数列的最后一个数是多少?//用于判断是否满足从子问题到原问题 转化的条件,能否进行转移;

sum(i)
以第 i 个数作为数列的最后一个数从前 i 个数中所得数列其最大和;
这样同时刻画下来了必备的子问题解空间的信息 //亦或是上一个状态的信息

子问题与原问题的关系
//状态转移方程
sum(i) = max( sum(k) + a[i] ) k : [0,i-1]

随便写一组数:
2 3 2 4 5
可见问题 为 求 sum(1)到 sum(5) 中最大的。
画子问题图 用于判断问题解答顺序的依赖关系
s[5]
s[0] +a[5] , s[1]+a[5], s[2] +a[5] ,s[3]+a[5],s[4]+ a[5]

s[1]
s[0] + a[1];

s[2]
s[0] +a[2],s[1]+a[2]

s[3]
s[0]+a[3] ,s[1] +a[3],s[2] +a[3]


可以看出子问题的解决是以
S1 S2 S3 S4。。。SN这样的顺序。
每个子问题的解决均可能调用其 序数小于他的解 并从 找到转移产生最大的

可写出自底向上的代码

for(int i = 1;i <=N;i++){//从sum(1) 到 sum(n)
    int max = 0;
    for(int j = 0;j <= i-1;j++) //从前 i-1 个子问题找
        if(a[i] > a[j] || j == 0 )//判断是否能进行转化
            max = max > s[j] + a[i] ? max : s[j] +a[i];
    s[i] = max;//取最大并更新
    whole_max = whole_max > max ? whole_max : max;
}//for

从而解决问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HDU1087:Super Jumping! Jumping! Jumping!(DP)

Problem Description Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is ver...

hdu 1087 dp

//考察点dp //思路:这里我使用dp数组,dp[i]表示到i位置之前的最大值(包括i),最后我们只需要重新遍历一下数组dp获得最大值,即为所求结果。 //提交情况:使用g++提交compiler ...

HDU1087 Super Jumping! Jumping! Jumping! 【DP】

Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32...

HDU 1087-Super Jumping! Jumping! Jumping!(简单DP)

Problem Description Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is ver...

hdu1087之简单dp

hdu1087之简单dp

(step3.2.2)hdu 1087(Super Jumping! Jumping! Jumping!——简单DP)

题目大意:求最长上升子序列的最大和值 解题思路: 1)状态转移方程:f[i] = max(f[i], f[j] + a[i]); 2)具体实现过程这样来,首先记录下N个数  a[] 数组,对于每...

nyoj44 nyoj17 HDU1087 DP动规 连续字符串的和最大值 单调递增最长子序列 单调递增子序列最小个数 非连续最大递增子序列

连续字符串的和最大值 给定一整型数列{a1,a2…,an},找出连续非空子串{ax,ax+1,…,ay},使得该子序列的和最大,其中,1 样例输入 1 5 1 2 -1 3 -2 样例输出 ...

hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)

hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)

HDU-1087-Super Jumping! Jumping! Jumping!(DP)

Super Jumping! Jumping! Jumping!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...

hdu 1087 Super Jumping! Jumping! Jumping!(DP)

Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)