HDOJ HDU 1087 Super Jumping! Jumping! Jumping!
2017-09-11 22:45
567 查看
HDOJ HDU 1087 Super Jumping! Jumping! Jumping!
题目
HDOJ HDU 1087 Super Jumping! Jumping! Jumping!分类
动态规划题意
如图每个人 要从 n个给定的格子从 start 跳到 end
每次能跳过很多个棋子 且 不能后退
每次跳过的格子只能比上一次的大
求最大可以得多少分
题解
每一次得跳跃策略 都影响 下一步应该有某种递推关系
想到动态规划
我们看规划策略
以 i 为 结尾得最大分值
j 为 当前结尾元素 num[j] 为 j 的 分值
dp[i][j] = max(dp[i][j], dp[i][j] + num[j]) (0 <= i <= n) (0 <= j <= i )( num[i] > num[j] )
代码
#include <iostream> #include <cstring> #define maxn 1000 using namespace std; int num[maxn+1]; int dp[maxn+1]; int main() { int n,ans; while(cin >> n && n) { ans = 0; dp[0] = 0; memset(dp,0,sizeof(dp)); for(int i = 1;i <= n;i++) { cin >> num[i]; dp[i] = num[i]; } dp[1] = num[1]; for(int i = 1;i <= n;i++) for(int j = 1;j < i;j++) { if(num[j] < num[i]) dp[i] = max(dp[i],dp[j] + num[i]); } for(int i = 1;i <= n;i++) if(dp[i] > ans) ans = dp[i]; cout << ans << endl;; } return 0; }
相关文章推荐
- 【HDU 1087】Super Jumping! Jumping! Jumping!(最大上升子序列和,动态规划)
- hdu1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping! 【简单dp思维题】
- [HDU] 1087 Super Jumping! Jumping! Jumping! -基本模型中的 最大递增非连续字段和
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】
- HDU1087 Super Jumping! Jumping! Jumping!(LIS)
- hdu 1087 Super Jumping! Jumping! Jumping!(dp:上升子序列最大和)
- HDU:1087 Super Jumping! Jumping! Jumping!(DP,LIS问题)
- hdoj 1087 Super Jumping! Jumping! Jumping! (LIS)
- HDU1087 Super Jumping! Jumping! Jumping!(动态规划,最大递增子段和)
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping! 上升序列最大和+DP .
- hdu/hdoj 1087 Super Jumping! Jumping! Jumping!
- HDOJ1087 Super Jumping! Jumping! Jumping!
- hdu 1087 - Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping! && 1114 Piggy-Bank 简单dp
- hdu 1087 Super Jumping! Jumping! Jumping!(水~dp)
- hdu 1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping!