题意:只能走比当前旗子大的旗子,不能回头,求走过最大的旗子的和。
/* *********************************************** Author :devil Created Time :2015/12/21 20:58:22 ************************************************ */ #include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <queue> #include <map> #include <set> #include <vector> #include <cstdio> using namespace std; int a[1010],dp[1010]; int main() { //freopen("in.txt","r",stdin); int n; while(~scanf("%d",&n)&&n) { memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) scanf("%d",&a[i]); int ans=a[0]; dp[0]=a[0]; for(int i=1;i<n;i++) { 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]); } ans=max(ans,dp[i]); } printf("%d ",ans); } return 0; }