hdu 1087 Super Jumping! Jumping! Jumping!

又是一道模板题!!

#include <cstdio>
#include <cstring>
const int maxn=1010;
int a[maxn],dp[maxn],m,Max;
void LICS()
{
  memset(dp,0,sizeof(dp));
  for(int i=0;i<m;i++)
  {
    dp[i]=a[i];
    for(int j=0;j<i;j++)
      if(a[i]>a[j] && dp[i]<dp[j]+a[i])//a[i]<a[j]就是单调递减最长子序列,思想上和递增的是一样的
        dp[i]=dp[j]+a[i];
  }
  Max=0;
  for(int i=0;i<m;i++)
    if(Max<dp[i])
    Max=dp[i];
}
int main()
{
  int n;
  scanf("%d",&m);
  while(m!=0)
  {
    for(int i=0;i<m;i++)
          scanf("%d",&a[i]);
    LICS();
    printf("%d\n",Max);
    scanf("%d",&m);
  }
  return 0;
}


你可能感兴趣的:(HDU,1087)