#include "stdio.h"
#define MAXN 1000
double h[ MAXN ];
int left[ MAXN ];
int right[ MAXN ];
int N;
void init()
{
int i, j;
for(i = 0; i < N; i ++)
{
for(j = 0; j < i; j ++)
{
if(h[ i ] > h[ j ] && left[ i ] < left[ j ] + 1)
{
left[ i ] = left[ j ] + 1;
}
}
}
for(i = N - 1; i >= 0; i --)
{
for(j = N - 1; j > i; j --)
{
if(h[ i ] > h[ j ] && right[ i ] < right[ j ] + 1)
{
right[ i ] = right[ j ] + 1;
}
}
}
}
int main()
{
int i, j;
int max;
while(scanf("%d", &N) != EOF)
{
for(i = 0; i < N; i ++)
{
scanf("%lf", &h[ i ]);
left[ i ] = 1;
right[ i ] = 1;
}
max = 0;
init();
for(i = 0; i < N; i ++)
{
for(j = i; j < N; j ++)
{
if(max < left[ i ] + right[ j ])
{
max = left[ i ] + right[ j ];
if(i == j)
{
max --;
}
}
}
if(max < left[ i ])
{
max = left[ i ];
}
if(max < right[ i ])
{
max = right[ i ];
}
}
printf("%d\n", N - max);
}
return 0;
}
POJ1836(LIS)
最新推荐文章于 2021-05-25 21:05:47 发布