贪心:每次用拦截距离最小的导弹拦截系统拦截,不够拦截则开辟新的拦截系统。
#include<iostream>
using namespace std;
int main()
{
int dp[10001]; //dp[i]表示第i个导弹拦截系统当前拦截的高度
int res; //最终所要导弹拦截系统的套数
int m,i,x;
int min,flag,tmpi;
while(cin>>m)
{
res=0;
while(m--)
{
cin>>x;
min=0x7fffffff;
flag=0;
for(i=0;i<res;i++)
if(x<=dp[i] && min>dp[i]-x)
{
flag=1;
tmpi=i;
min=dp[i]-x;
}
if(flag) dp[tmpi]=x;
else dp[res++]=x;
}
cout<<res<<endl;
}
return 0;
} 原文地址:http://blog.csdn.net/a809146548/article/details/44177131