http://acm.hdu.edu.cn/showproblem.php?pid=1087
(注意:提交时需选择编译器为G++不能是C++只有G++能识别 '万能头文件‘ #include<bits/stdc++.h>)
AC代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M = 1010;
ll a[M],dp[M];
int n;
void solve()
{
//ans=0;
for(int i=0;i<n;++i){
for(int j=0;j<i;++j)
{
if(a[j]<a[i]){
dp[i]=max(dp[i],dp[j]+a[i]);
//ans+=dp
}
}
}
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(dp,0,sizeof(dp));
if(n==0 ) break;
for(int i=0;i<n;++i)
{
cin>>a[i];
dp[i]=a[i];
}
solve();
sort(dp,dp+n);
printf("%d\n",dp[n-1]);
//也可以这样输出答案ans(但是ans必须定义为ll 因为数组a,dp均为ll)
//ll ans=0;
// for(int i=0;i<n;i++)
// ans=max(dp[i],ans);
}
return 0;
}