为啥我输出的是7 2 1?怎么改?
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
这个代码怎么修改?这是运行时的提示:
#include <iostream>
#include <stdio.h>
using namespace std;
void finding(int i, int a[10001]);
int main()
{
int a[10001];
int i = 1;
a[0] = 50000;
while (cin >> a[i]) //输入数据
i++;
i--;
finding(i, a); //执行函数
return 0;
}
void finding(int i, int a[10001])
{
int u = 1;
int total = 0;
int z = 1;
for (int n = 1; n <= i; n++) {
if (a[n] < a[n - 1])
total++; //计算第一套拦截系统拦截的导弹数
else {
a[u] = a[n];
u++; //将不能拦截的导弹数列入第二套系统计算
z++; //拦截系统数目
}
}
if (u == 1 || (u == 2 && z == 2)) //没有执行find()之前输出第一套拦截系统的导弹数
cout << total << endl;
int h = u;
if (u != 1) //没有执行else语句
finding(h, a); //计算第二套拦截系统是否能拦截成功,如果不能,继续执行
else //直到不再执行finding()后输出z
cout << z; //输出所需要的拦截系统总数
}