您的位置:首页 > 其它

noj1031建筑群最长坡值

2016-02-12 19:52 246 查看
最长递减序列,状态转移方程dp(i)=max(dp(j))+1(j<i)(其中dp(i)定义为以i为截止的最长递减序列长度,最后从头到尾扫描一遍找到最长长度

//状态转移方程dp(i)=dp(j)+1(j<i)其中dp(i)定义为以i为结尾的之前递减序列的个数最长长度
#include <stdio.h>
#include <string.h>
int dp[1005];
int a[1005];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,n,ans;
ans=0;
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d",&a[i]);
for (i=0;i<n;i++)
dp[i]=1;
for (i=0;i<n;i++)
for (j=0;j<i;j++)
if ((a[i]<a[j])&&(dp[i]<dp[j]+1))
dp[i]=dp[j]+1;
for (i=0;i<n;i++)
ans=max(ans,dp[i]);
printf("%d\n",ans);
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: