hdu1257
这道题目我是先用贪心a了的,但是最近在做dp,所以用dp思考了下,果断错了。
dp思路:是一道最长非递减子序列,但是,在新增一道拦截系统的情况下,前面已经存在的拦截系统依旧可以使用.......
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[10000];
int main()
{
int n;
while(scanf("%d",&n)>0)
{
int dp[10000]={3000};
int i;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
i=1;
int k=1;
while(k<=n)
{
for(int j=1;j<=i;j++)
{
if(dp[j]>=a[k])
{
dp[j]=a[k];
break;
}
}
if(j>i)
{
dp[++i]=a[k];
}
k++;
}
printf("%d\n",i-1);
}
return 0;
}
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

浙公网安备 33010602011771号