解法
lis和
之前dp代表的是当前lis的最大的长度,现在求的是lis的和,那么引入一个新的ans来记录和
注意遍历的时候i从1开始,j从0开始这也可以遍历第一个数
代码
#include <bits/stdc++.h>
using namespace std;
int a[1005],ans[1005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
while(cin>>n&&n)
{
int maxn=0;
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
for(int j=0;j<i;j++)
if(a[j]<a[i])
{
ans[i]=max(ans[i],ans[j]+a[i]);
maxn=max(maxn,ans[i]);
}
cout<<maxn<<"
";
}
}