Super Jumping! Jumping! Jumping! HDU - 1087

解法

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<<"\n";
  }
}
posted @ 2019-01-13 19:38  baccano!  阅读(79)  评论(0编辑  收藏