首页 > 解决方案 > 如何解决 Hackerrank 分段错误

问题描述

我正在解决hackerrank(https://www.hackerrank.com/challenges/variable-sized-arrays/problem)上的可变大小数组问题

我想到了这个解决方案:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int n ,q, k, i, j, a[10000][10000];
    cin>>n;

    cin>>q;
    for (int w = 0; w<n; w++)
    {
        cin>>k;
        for (int x=0; x<k; x++)
        {
            cin>>a[w][x];
        }
    }
    for(int e=0; e<q; e++)
    {
        cin>>i>>j;
        cout <<a[i][j]<<"\n";
    }

    
        return 0;
}

它适用于 3 种情况,但对于其他情况,它会给出“分段错误”错误。我想不出这段代码有什么问题。我该如何解决这个问题?

标签: c++arrays

解决方案


分段错误的一个可能原因可能是因为它试图访问超出范围的内存位置。

您声明的数组的容量为 10^4,但在问题中提到它可以轻松达到 10^5。因此,在您遇到分段错误的最后几种情况下,它可能试图访问大于 10^4 的索引。

一个快速的解决方法是让你的数组足够大。


推荐阅读