您的位置:首页 > 其它

建筑群最长坡值 南邮OJ 1031

2010-05-16 12:33 155 查看

建筑群最长坡值

时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte

描述

建筑群所有建筑高度分别为h1、h2…hN,可以得到一些单调递减的序列hi1、hi2…hiK,其长度称为建筑群的坡值,这里1≤i1< i2<…< iK≤N。

你的任务:对于给定的建筑群所有建筑高度,求出建筑群最长坡值。

输入

第一行是建筑群中的建筑数N(1≤N≤1000)。

第二行依次给出各个建筑的高度(大小从0到1000),中间用空格分开。

输出

建筑群最长坡值

样例输入
10
108 60 79 50 119 40 90 230 20 80
样例输出
5

此题主要算法为最长递增子序列的算法,即动态规划。

//#include <fstream>
#include <iostream>
using namespace std;
int main()
{
//	ifstream cin("1.txt");
int num;
int i,j;
cin>>num;
int *a=0;
int *f=0;
a=(int *)malloc(sizeof(int)*num);
f=(int *)malloc(sizeof(int)*num);
for(i=0;i<num;i++)
{
cin>>a[i];
}
int count;
f[0]=1;
int max=f[0];
for(i=1;i<num;i++)
{
f[i]=1;
for(int j=0;j<i;j++)
{
if(a[j]>a[i]&&f[j]>f[i]-1)
f[i]=f[j]+1;
}
if(f[i]>max)
max=f[i];
}
cout<<max<<endl;
free(a);
free(f);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: