c++ - 如何解决 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 种情况,但对于其他情况,它会给出“分段错误”错误。我想不出这段代码有什么问题。我该如何解决这个问题?
解决方案
分段错误的一个可能原因可能是因为它试图访问超出范围的内存位置。
您声明的数组的容量为 10^4,但在问题中提到它可以轻松达到 10^5。因此,在您遇到分段错误的最后几种情况下,它可能试图访问大于 10^4 的索引。
一个快速的解决方法是让你的数组足够大。
推荐阅读
- ios - Swift Xcode Files 文件夹未正确显示
- c# - 由于同一范围内的另一个任务抛出异常而处于不确定状态的任务的命运是什么?
- sql - CASE WHEN 多个部分匹配 BigQuery
- php - 使用 PHP 连接到另一台计算机上的 SQL Server
- c - Linux Kernel 我应该将 asmlinkage 用于实现系统调用的函数吗?
- latex - Overleaf 的参考书目定制
- c# - 处理 ajax 500 “内部服务器错误”
- python - 如何让机器人说出 Discord.py 中的在线和离线人数
- ruby - 如何使用 Ruby 对 Shopify 进行基本的 GraphQL 查询
- kubernetes - 通过 GCP 的 Kubernetes 仪表板