贪心:每次用拦截距离最小的导弹拦截系统拦截,不够拦截则开辟新的拦截系统。
#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; }
时间: 2024-10-11 10:14:35