您的位置:首页 > 其它

HDU 1257 (最大上升子序列)

2013-03-12 14:30 323 查看
思路:求最大上升子序列:由于是每套拦截系统以后每一发炮弹都不能超过前一发的高度,所以对于后面一发比前面高的炮弹,必须需要新的拦截系统来处理(击下前面较低炮弹的系统已经无法拦截)。所以需要的拦截系统数量至少是最大上升子序列的长度。

#include <iostream>

using namespace std;
const int maxn=10000+10;
int a[maxn],dp[maxn];
int main()
{
int n;
while(cin>>n)
{
int x;
for(int i=0;i<n;i++)
{
cin>>a[i];
dp[i]=0;
for(int j=0;j<i;j++)
if(a[i]>a[j]&&dp[j]>dp[i]) dp[i]=dp[j];
dp[i]++;
}
int ans=0;
for(int i=0;i<n;i++)
if(ans<dp[i]) ans=dp[i];
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: