HDOJ 1087 Super Jumping! Jumping! Jumping!
2009-02-26 21:13
369 查看
经典DP例题:HDU 1087 Super Jumping! Jumping! Jumping!
http://acm.hdu.edu.cn/showproblem.php?pid=1087
这道理的题意是给一个序列要你求它的最大上升序列(可跳)不用连续
如序列:1 4 7 3 5 6 那么开另一个数组来保存同下标的“最大值”,每一个都要向前找合法的最大b值,如这里的5可以找的合法值为3 4 1,找到最大后便加上同下标的a值,如:
数组a:1 4 7 3 5 6
数组b:1 5 12 4 10 16 à这样找到B中的最大值就OK了!
http://acm.hdu.edu.cn/showproblem.php?pid=1087
这道理的题意是给一个序列要你求它的最大上升序列(可跳)不用连续
如序列:1 4 7 3 5 6 那么开另一个数组来保存同下标的“最大值”,每一个都要向前找合法的最大b值,如这里的5可以找的合法值为3 4 1,找到最大后便加上同下标的a值,如:
数组a:1 4 7 3 5 6
数组b:1 5 12 4 10 16 à这样找到B中的最大值就OK了!
#include <iostream> using namespace std; int main() { int i,j,k,l,n,m,t; int a[1002],b[1002] = {0}; while (scanf("%d",&n)!=EOF && n) { for (i=0;i<n;i++) { scanf("%d",&a[i]); } //即求A中的最大上序列 //1 4 3 2 5 6 memset(b,0,sizeof(b)); int sum = 0; k=0; int maxnum = -1; for (i=0;i<n;i++) { b[i] = a[i]; int maxb = 0; for (j=0;j<i;j++) //找比自己小的里面b最大的 { if (a[i] > a[j]) { if (b[j] > maxb) { maxb = b[j]; } } } b[i] += maxb; if (b[i] > maxnum) { maxnum = b[i]; } } printf("%d/n",maxnum); } return 0; }
相关文章推荐
- hdoj_1087Super Jumping! Jumping! Jumping!
- HDOJ 1087Super Jumping! Jumping! Jumping!解题报告
- hdoj 1087 Super Jumping! Jumping! Jumping!
- hdoj Super Jumping! Jumping! Jumping! 1087 (DP求单调递增最大值)
- hdoj 1087 Super Jumping! Jumping! Jumping!(最大递增子段和)
- hdoj1087 Super Jumping! Jumping! Jumping! ( dp )
- HDOJ 1087 Super Jumping! Jumping! Jumping! 解题报告
- hdoj 1087 Super Jumping! Jumping! Jumping! 【dp&&最大递增子段和】
- hdoj1087 Super Jumping! Jumping! Jumping!(DP)
- HDOJ 1087 Super Jumping! Jumping! Jumping! (DP)
- HDOJ 1087 Super Jumping! Jumping! Jumping!(LIS变形)
- HDOJ/HDU 1087 Super Jumping! Jumping! Jumping!(经典DP~)
- hdoj 1087 Super Jumping! Jumping! Jumping!(动态规划)
- HDOJ 1087 Super Jumping! Jumping! Jumping!
- hdoj 1087Super Jumping! Jumping! Jumping!【dp】
- hdoj 1087Super Jumping! Jumping! Jumping!
- hdoj_1087Super Jumping! Jumping! Jumping!
- HDOJ1087 Super Jumping! Jumping! Jumping!
- HDOJ 1087 Super Jumping! Jumping! Jumping!
- HDOJ/HDU 1087 Super Jumping! Jumping! Jumping!(经典DP~)