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]。;
的多维数组,这意味着超过15亿个整数。@那么还有什么替代方法呢?@RohanBari嘿,那么为什么该程序适用于较小的输入大小呢?VLAs(可变长度数组)是特定于编译器的功能,而不是核心语言的一部分。因此它们对您有效,因为您使用了一个编译器(gcc?)来处理它。根据编译器的不同,它们通常被视为不好的样式(可移植性)如果你使用这个编译器特性,你仍然必须小心不要用它来处理大数组。动态分配的内存通常允许存储更大的数组。C++中使用动态内存的规范方式是上面提到的<代码> STD::向量< /代码>。39893*39898
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