HDU-1087-Super Jumping! Jumping! Jumping!:最简单的一道入门题

求递增子序列的最大和 
状态转移方程:table[i] = max(table[i]+value[j]) 前提value[i]>value[j], 构成递增】 
其中j from 0 to i-1  table[i]是前i个中的最优状态, value[j] 是 j 的价值 

#include<iostream>

using namespace std;

#define Size 1000

int main()

{

        int N;

        int value[Size+1];

        int table[Size+1];

        

        while( cin>>N&&N!=0 )

        {

                int ans=0;

                

                for( int i=0; i<N; i++ )

                {

                        cin>>value[i];

                        table[i]=value[i];

                        

                        for( int j=0; j<i; j++ )

                                if( value[i]>value[j] && value[i]+table[j]>table[i] )

                                        table[i] = value[i]+table[j];

                                        

                        if( table[i]>ans )

                            ans = table[i];

                }

                cout<<ans<<endl;

        }

        return 0;

}

  

你可能感兴趣的:(super)