hdu 1087 Super Jumping! Jumping! Jumping!
2014-05-14 22:27
281 查看
类似最长递增子序列的想法,只不过这里求的是到第i个元素时,最长递增子序列,各个元素的和。求最大的那个值
状态转移方程:dp[i]=max(dp[j]+value[i],dp[i]) 其中(num[j]<num[i],表示i可以从j跳过去)(0<=j<i)
状态转移方程:dp[i]=max(dp[j]+value[i],dp[i]) 其中(num[j]<num[i],表示i可以从j跳过去)(0<=j<i)
#include<stdio.h> #include<string.h> int main(){ int num[1010],dp[1010]; int n,i,j,tem; long long s,m; while(scanf("%d",&n),n){ memset(num,0,sizeof(num)); for(i=0;i<n;i++){ scanf("%d",&num[i]); dp[i]=num[i]; } s=0; for(i=1;i<n;i++){ for(j=0;j<i;j++) if(num[i]>num[j]){//满足递增且当前的dp[i]小与前面中的dp[j]+当前的数 dp[i]=dp[i]>dp[j]+num[i]?dp[i]:dp[j]+num[i];//dp[i]为最长递增子序列的和,当前num[i]必选。 } if(s<dp[i]) s=dp[i]; } printf("%lld\n",s); } return 0; }
相关文章推荐
- HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDU - 1087 Super Jumping! Jumping! Jumping! 解题报告
- hdu 1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping!(DP)
- hdu 1087 Super Jumping! Jumping! Jumping! (简单 LIS)
- HDU 1087 Super Jumping! Jumping! Jumping! (线性dp)
- HDU 1087 Super Jumping! Jumping! Jumping!(求绝对递增子序列的最大和)
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping!(DP)
- HDU 1087 Super Jumping! Jumping! Jumping! (DP+LIS)
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDU---1087-Super Jumping! Jumping! Jumping!(DP)
- HDU1087--Super Jumping! Jumping! Jumping!
- HDU-1087-Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping!
- HDU 1087 Super Jumping! Jumping! Jumping! (求最大上升子序列和,动态规划)
- HDU 1087 Super Jumping! Jumping! Jumping!
- hdu 1087 Super Jumping! Jumping! Jumping!
- [LIS_最长递增子序列]-hdu 1087 Super Jumping!