题目:导弹拦截
思路:最长不上升子序列
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 15
#define inf (1<<30)
int n;
int a[maxn+5]= {0};
int f[maxn+5]={0};
bool cmp(int x,int y){
return y<x;
}
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
int len=1;
f[1]=a[1];
for(int i=2; i<=n; i++) {
if(a[i]<f[len]) {
f[++len]=a[i];
continue;
}
int x=lower_bound(f+1,f+len+1,a[i],cmp)-f;
f[x]=max(a[i],f[x]);
}
printf("%d",len);
return 0;
}
本文介绍了一种解决导弹拦截问题的算法实现。通过最长不上升子序列的思路,利用C++编程语言实现了具体的代码逻辑。该算法首先读取输入的导弹序列,然后通过动态规划的方法找出最优的拦截方案。
8291

被折叠的 条评论
为什么被折叠?



