2012-06-22 111 views
1

我在Codechef上提交練習題時遇到了很奇怪的問題。凡「全局聲明2D字符數組」的解決方案已被接受,而「主函數內聲明」的解決方案被拒絕爲錯誤答案。2D char數組的全局和局部聲明

以下是解決方案的鏈接。

1)具有全局聲明:http://www.codechef.com/viewsolution/1138654
2)內部的主要具有Delaration():http://www.codechef.com/viewsolution/1138660

PS1:我不使用的主要功能之外的所述2D char數組。
PS2:我在談論數組「char boardString [1000] [1000]」;

回答

3

因爲您可能用完堆棧空間。

在聲明全局它得到在數據/ BSS段分配的數組(注意,這是實現細節
而當你在main()聲明一個陣列它得到在棧上本地創建(同樣一實現細節

由於您正在分配的數組很大(1000 X 10000),因此可能會用盡堆棧空間。
Codechef足夠智能,可以檢測到這個問題,因此它將main()中的數組拒絕爲錯誤答案。

1

正如Als正確地指出,問題很可能是由於堆棧空間的限制。如果你喜歡將你的變量封裝在main中,但不想將它分配到堆棧上,那麼你只需要在那裏聲明static