hdu1087

最长升序子序列,dp水题
if(dp[i]<dp[j]+value[i])
dp[i]=dp[j]+value[i];
完整代码如下:

#include<stdio.h>
#define N 1001
int dp[N];
int value[N];
int n,max;
int main()
{
    int i,j;
    while(scanf("%d",&n)!=EOF&&n){
        for(i=0;i<n;i++){
            scanf("%d",&value[i]);
        }
        dp[0]=max=value[0];
        for(i=1;i<n;i++){
            dp[i]=value[i];
            for(j=0;j<i;j++){
                if(value[i]>value[j]){
                    if(dp[i]<dp[j]+value[i])
                        dp[i]=dp[j]+value[i];
                }
            }
            if(dp[i]>max)
                max=dp[i];
        }
        printf("%d\n",max);
    }
    return 0;
}
点赞