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 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding