我在 codechef 上提交练习题时遇到了一个非常奇怪的问题。解决方案“具有二维字符数组的全局声明”被接受,而“在主函数内声明”的解决方案被拒绝为错误答案。
下面是解决方案的链接。
1) 具有全局声明:http://www.codechef.com/viewsolution/1138654
2) 在 main() 中有声明:http://www.codechef.com/viewsolution/1138660
PS1:我没有在主函数外使用二维字符数组。
PS2:我说的是数组“char boardString[1000][1000]”;
最佳答案
因为您可能用完了堆栈空间。
当您全局声明一个数组时,它会在数据/Bss 段中分配(注意这是实现细节)
同时,当您在 main()
中声明一个数组时,它会在堆栈上本地创建(再次实现细节)
由于您分配的数组很大(1000 X 10000
),您可能会用完堆栈空间。
Codechef 足够聪明,可以检测到这个问题,因此它会拒绝 main()
中带有数组的代码作为错误答案。
关于c++ - 二维字符数组的全局和局部声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152036/