题解
题写的比较早用的贪心没用dp 每次找到能接受当前导弹的最低高度的设备 如果没有则增加一个设备
AC代码
#include <stdio.h>
#include <string.h>
#define MAXN 100000
int main()
{
//freopen("C:/input.txt" , "r" , stdin);
int n; //导弹个数
while(scanf("%d" , &n) != EOF)
{
int arr[MAXN] , cnt = 0; //设备高度 设备数
memset(arr , 0 , sizeof(arr));
for (int ni = 0;ni < n;ni++)
{
int t; //导弹高度
scanf("%d" , &t);
int _min = 30001 , k = -1; //能接下该导弹的最低设备 设备号
for (int i = 0;i < cnt;i++)
{
if (arr[i] >= t && arr[i] < _min) //足够接下的最低设备
{
_min = arr[i];
k = i;
}
}
if (k != -1) //有能接下的设备
arr[k] = t; //接下并降低高度
else
arr[cnt++] = t; //用新的设备接下导弹并等于导弹高度
}
printf("%d\n" , cnt);
}
return 0;
}