题目链接:http://ac.jobdu.com/problem.php?pid=1480
我的提交 :
很显然的一个dp问题,状态转移方程:
代码:
#include <bits/stdc++.h>
using namespace std;
long long dp[1001];
#define max(a,b)(a>b?a:b)
int main(){
int N;
int a[1001];
while(cin>>N){
memset(dp , 0 , sizeof dp);
long long maxdp = 0;
for (int i =0 ; i < N ; i ++){
cin>>a[i];
if (i==0)
dp[i] = a[i];
else{
dp[i] = a[i];
for (int j = 0 ; j < i ; j++){
if (a[i]>a[j])
dp[i] = max(dp[i],dp[j]+a[i]);
}
}
//cout<<"dpi"<<dp[i]<<endl;
maxdp = max(maxdp , dp[i]);
}
cout<<maxdp<<endl;
}
return 0;
}