简单题。用一个数组存放每个拦截系统的导弹能达到的最大高度,如果后继导弹超过所有拦截系统的最大高度,那么数组就增加。只要小于某一拦截系统的话,那么就更新最大高度。
CODE:
#include <stdio.h>
#include <stdlib.h>
#include < string.h>
#include <math.h>
using namespace std;
#define INF 30001
const int SIZE = 1001;
int save[SIZE];
int main()
{
int N;
int n;
while(~scanf( " %d ", &N))
{
int i, j;
int cnt = 1;
memset(save, INF, sizeof(save));
for(i = 0; i < N; i++)
{
scanf( " %d ", &n);
for(j = 1; j <= cnt; j++)
{
if(n < save[j]) // 小于某一拦截系统的最大高度
{
save[j] = n; //更新最大高度
break;
}
}
if(j > cnt) // 大于所有拦截系统的最大高度
{
save[++cnt] = n;
}
}
printf( " %d\n ", cnt);
}
return 0;
}
#include <stdlib.h>
#include < string.h>
#include <math.h>
using namespace std;
#define INF 30001
const int SIZE = 1001;
int save[SIZE];
int main()
{
int N;
int n;
while(~scanf( " %d ", &N))
{
int i, j;
int cnt = 1;
memset(save, INF, sizeof(save));
for(i = 0; i < N; i++)
{
scanf( " %d ", &n);
for(j = 1; j <= cnt; j++)
{
if(n < save[j]) // 小于某一拦截系统的最大高度
{
save[j] = n; //更新最大高度
break;
}
}
if(j > cnt) // 大于所有拦截系统的最大高度
{
save[++cnt] = n;
}
}
printf( " %d\n ", cnt);
}
return 0;
}