输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数) 输出这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 6 2 导弹的高度<=30000,导弹个数<=20 #include <iostream> #define MAXSIZE 100 int p[MAXSIZE];//表示以下标i为结束的序列的情况 using namespace std; /* 1.就是利用p[i]=max(p[i+1],p[i+1]+a[i]),来求解最多拦截数 2.对于导弹系统就可以通过简单的 逆序数 来求解,线性代数里的问题 */ int dp(int begin,int a[],int end)//就是一个寻找最长递减子序列问题 { int i; int max=-1; for(i=end;i >= begin+1;i--) { if(a[i] <= a[begin] && p[i] > max) { max=p[i]; } } if(max == -1) p[begin]=1; else p[begin]=max+1; if(begin > 0) dp(begin -1,a,end); return 0; } int main() { int d[MAXSIZE]; int n=0,max; int i,j,count=0; cin >> d[n++