Lucky_E993 2021-10-29 08:40 采纳率: 0%
浏览 24

为什么我的代码在输入大量数据时炸掉?

img

数据范围:
1 ≤ T ≤ 100
1 ≤ n ≤ 5000
1 ≤ m ≤ 10
0 ≤ xi≤1000


#include <iostream>
using namespace std;
int main()
{
    int T, max[1010], min[1010];
    int a[5050];
    cin >> T;
    int k = T;
    while (T--)
    {
        int m, n, temp=1,c=0;
        
        cin >> n >> m;
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
        }
        for (int j = 1; j < n; j++)
        {
            int key = a[j];
            int i = j - 1;
            while (i >= 0 && a[i] > key)
            {
                a[i + 1] = a[i];
                i--;
            }
            a[i + 1] = key;
        }
        for (int i = 0; i < n;)
        {
            int b = 0;
            if (a[i + 1] - a[i] <= m&&a[i+1]>=0)
            {
                b = 1;
                i++;
                temp++;
                continue;
            }
            if (b == 0)
            {
                i++;
                c++;
                if (temp < min[T] || c == 1)
                {
                    min[T] = temp;
                }
                if (temp > max[T])
                    max[T] = temp;
                temp = 1;

            }
        }
        
    }
    while (k--)
        cout << min[k] << " " << max[k] << endl;
        
    return 0;

}
  • 写回答

1条回答 默认 最新

  • 关注

    第33 行的if语句中,因为for循环中是 i<n, 当i = n-1时,a[i + 1] 会越界(这里说的越界不是超出数组大小,而是说 a[i+1] 没有初始化,没有被赋值)

    评论

报告相同问题?

问题事件

  • 创建了问题 10月29日

悬赏问题

  • ¥15 skynet MySQL ProtocolBuffers
  • ¥15 Boost库编译出错。
  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?