azazinco 2019-11-23 15:22 采纳率: 0%
浏览 360
已结题

导弹拦截问题,这个代码怎么修改?题目如下:

图片说明

为啥我输出的是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;                            //输出所需要的拦截系统总数
}
  • 写回答

3条回答 默认 最新

  • qtchen_1988 2019-11-23 15:36
    关注
    声明的时候,第二参数是int 类型,返回值为int;
    int finding(int n, int m);
    
    定义的时候,返回值为void 第二参数为数组
    void finding(int i, int a[10001])
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考