您的位置:首页 > 编程语言 > C语言/C++

HDOJ 1087Super Jumping! Jumping! Jumping!解题报告

2016-03-12 16:13 253 查看
本题就是一个dp的入门题,就是求最长上升子序列的和.....代码如下

#include <stdio.h>
#include <stdlib.h>
#define N 1005
int a
;
int dp
;

int main()
{
int cases,i,j,n;
int count=1;
while(scanf("%d",&n) && n!=0)
{
int ans=0;
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
dp[i]=a[i];
}
for(i=2;i<=n;i++){
for(j=1;j<=i-1;j++){
if(a[j]<a[i] && dp[j]+a[i]>dp[i])
dp[i]=dp[j]+a[i];
}
}
for(i=1;i<=n;i++){
if(dp[i]>ans)
ans=dp[i];
}

printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息