+ -
当前位置:首页 → 问答吧 → 上升子序列问题

上升子序列问题

时间:2011-07-23

来源:互联网

不懂上升子序列问题中的dp[i]=max(dp[j])+1,(j∈[1, i-1]);这个式子很明显是不正确
template<class T>
  int LIS(T a[],int n)
  {
  int i,j;
  int ans=1;
  int m=0;
  int *dp=new int[n+1];
  dp[1]=1;
  for(i=2;i<=n;i++)
  {
  m=0;
  for(j=1;j<i;j++)
  {
  if(dp[j]>m&&a[j]<a[i])
  m=dp[j];
  }
  dp[i]=m+1;
  if(dp[i]>ans)
  ans=dp[i];
  }
  return ans;
  }




还有就是上面代码中
for(i=2;i<=n;i++)
  {
  m=0;
  for(j=1;j<i;j++)
  {
  if(dp[j]>m&&a[j]<a[i])
  m=dp[j];
  }
  dp[i]=m+1;
  if(dp[i]>ans)
  ans=dp[i];
  }
  return ans;
  }看不懂是什么意思

作者: zouleixhyz   发布时间: 2011-07-23

乃知道动态规划是啥么?

作者: FancyMouse   发布时间: 2011-07-23