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 运筹学排序问题的应用
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办