题目链接:HDU 1257 最少拦截系统
贪心。
贪心来做很简单,就是每来一个导弹用离它最近那个高度的导弹来打,都不行的话,新开一个导弹拦截系统。
开始还每次排了下序后来我发现不用排序,按贪心来做排在前边的一定比后边的小。
这道题是放在动态规划模块里边的,有人用LIS做AC了,我画了画感觉是对的不过不知道为什么。
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_N = 10000;
int n;
int temp[MAX_N];
int main()
{
while(cin >> n)
{
int k = 0;
bool flag = false;
int height;
cin >>height;
temp[0] = height;
k++;
for(int i = 1;i < n;i++)
{
flag = false;
cin >> height;
//sort(temp,temp + k);
for(int j = 0;j < k;j++)
{
if(temp[j] > height)
{
temp[j] = height;
flag = true;
break;
}
}
if(!flag)
temp[k++] = height;
}
cout << k << endl;
}
return 0;
}