hdu 1087 Super Jumping! Jumping! Jumping! ----dp
2014-01-18 23:12
405 查看
题意:找所有上升子序列和中的最大值。
思路:统计以a[i]为上升子序列的最后一个值时,向前找上一个满足的最大累加和。
写法就很多了。。
之前做过这题,是另外开了个数组b,写法稍有区别,见下:
思路:统计以a[i]为上升子序列的最后一个值时,向前找上一个满足的最大累加和。
写法就很多了。。
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int a[1005],dp[1005]; int main() { int n,ans; while(scanf("%d",&n)&&n) { memset(dp,0,sizeof(dp)); ans=-1000000; for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) { for(int j=0;j<i;j++) { if(dp[j]==0) dp[j]=a[j]; if(a[i]>a[j] && dp[j]+a[i]>dp[i]) //开始少了&&后面的,要汲取教训! dp[i]=dp[j]+a[i]; } if(dp[i]==0) dp[i]=a[i]; if(dp[i]>ans) ans=dp[i]; } printf("%d\n",ans); } return 0; }
之前做过这题,是另外开了个数组b,写法稍有区别,见下:
#include<cstdio> #include<cstring> using namespace std; int a[1005],b[1005]; int main() { int ans,n; while(scanf("%d",&n)&&n) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) { int maxb=0; for(int j=0;j<i;j++) { if(a[i]>a[j] && maxb<b[j]) maxb=b[j]; } b[i]=a[i]+maxb; } ans=-1000000; for(int i=0;i<n;i++) { if(b[i]>ans) ans=b[i]; } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU---1087-Super Jumping! Jumping! Jumping!(DP)
- HDU 1087 Super Jumping! Jumping! Jumping!【dp】
- hdu 1087 Super Jumping! Jumping! Jumping!(水DP)
- HDU 1087 Super Jumping! Jumping! Jumping! DP 水题, 没能水过
- 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! -HDU 1087 dp
- HDU 1087 Super Jumping! Jumping! Jumping! (线性dp)
- hdu 1087 Super Jumping! Jumping! Jumping!(基础DP,最大上升子序列和)
- hdu 1087 Super Jumping! Jumping! Jumping!(最长上升子序列&dp)
- HDU 1087:Super Jumping! Jumping! Jumping!(DP之LIS)
- hdu 1087 Super Jumping! Jumping! Jumping! (DP)
- hdu 1087 Super Jumping! Jumping! Jumping!(简单dp)
- 【dp】HDU 1087 Super Jumping! Jumping! Jumping!
- hdu 1087 Super Jumping! Jumping! Jumping!(动态规划DP)
- HDU - 1087 Super Jumping! Jumping! Jumping!(dp)
- hdu 1087 Super Jumping! Jumping! Jumping! DP
- HDU 1087Super Jumping! Jumping! Jumping! —简单DP
- hdu 1087 Super Jumping! Jumping! Jumping!-dp 最长上升子序列和