Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这段代码会在Codeforces 79 B上导致运行时错误?_C++_C++14 - Fatal编程技术网

C++ 为什么这段代码会在Codeforces 79 B上导致运行时错误?

C++ 为什么这段代码会在Codeforces 79 B上导致运行时错误?,c++,c++14,C++,C++14,我正在解决一个问题,在我的代码中遇到了一个特定测试用例的运行时错误 问题陈述的简要总结如下: 给你一个二维数组,它的维数是nxm(n,m 这是非法的C++。自动数组必须用常量/文字大小声明。如果你想声明一个动态大小数组,你必须使用指针。我建议读那些,因为它们是优秀C++代码必不可少的,但是这里是你现在需要的语法: cin >> n >> m >> k >> t; ll* farm = new ll[n][m]; // This will crea

我正在解决一个问题,在我的代码中遇到了一个特定测试用例的运行时错误

问题陈述的简要总结如下:

  • 给你一个二维数组,它的维数是nxm(n,m <>这是非法的C++。自动数组必须用常量/文字大小声明。如果你想声明一个动态大小数组,你必须使用指针。我建议读那些,因为它们是优秀C++代码必不可少的,但是这里是你现在需要的语法:

    cin >> n >> m >> k >> t;
    ll* farm = new ll[n][m]; // This will create a dynamic 2D array of n * m
    delete [] farm; // Run this at the end of your code or when you're done with the array
    
    您现在拥有的应该无法编译。您确定没有得到编译错误而不是运行时错误吗

    此外,由于你使用了这么小的数字,你也只是用C++开始,我会使用int类型而不是LL。你做的事情不会有坏处,但是长的长的内存占用了比int

    更多的内存空间。
    这就是我现在能帮助你的全部。将来请在你的问题中提供尽可能多的信息。我们需要知道错误是什么,以便给你最好的帮助。我希望这能解决你的问题。

    问题摘要:给定一个
    N*M
    网格(
    N,M
    cin>>N>>M>>k>>t;ll farm[N][M]V/LAX:VLAS在C++标准中是非法的。建议使用<代码> STD::向量< /代码>。在这个程序中,<代码> ll农场[n] [M]。;
    很可能是这个特定测试用例出错的原因,因为它试图在堆栈上创建一个大小为
    39893*39898
    的多维数组,这意味着超过15亿个整数。@那么还有什么替代方法呢?@RohanBari嘿,那么为什么该程序适用于较小的输入大小呢?VLAs(可变长度数组)是特定于编译器的功能,而不是核心语言的一部分。因此它们对您有效,因为您使用了一个编译器(gcc?)来处理它。根据编译器的不同,它们通常被视为不好的样式(可移植性)如果你使用这个编译器特性,你仍然必须小心不要用它来处理大数组。动态分配的内存通常允许存储更大的数组。C++中使用动态内存的规范方式是上面提到的<代码> STD::向量< /代码>。
    
    Can you tell me why the code isn't passing the required test-case? Any alternative solution will also be appreciated. 
    
    cin>>n>>m>>k>>t;
    ll farm[n][m];
    
    cin >> n >> m >> k >> t;
    ll* farm = new ll[n][m]; // This will create a dynamic 2D array of n * m
    delete [] farm; // Run this at the end of your code or when you're done with the array