2013-03-29 53 views
0

我想將最小超類型算法應用於黑白棋類遊戲 - 我發現的問題是每個1/2層將需要其自己的「假」遊戲板進行測試。選擇數組作用於沒有函數版本的函數對於陣列的每個副本

因此,它看起來,因爲數組不能作爲參數傳遞,我需要一個64參數的函數和每個1/2層的數組,或者我需要手動編寫每個層的函數和數組的副本(即checkMovePly1,checkMovePly2等),或者在本地創建數組(在這一點上,AI進行移動將導致每轉動生成和創建64 ^(2 * ply)數組,這似乎可能會有點運行慢)。

如果我可以解決陣列問題,這似乎應該工作幾層,因爲它只會是一個時間複雜度爲O(64 ^(2 * ply)),雖然取決於可能的方法64 ^(2 * ply)創建和破壞數組。

任何想法如何解決多個陣列問題,這是一個合理的方法?

+0

我試着回答,但我不確定是否完全理解了你的問題。 –

+0

誰告訴你數組不能作爲參數傳遞? – JalalJaberi

+0

和你選擇的這個問題的標籤根本不好;) – JalalJaberi

回答

0

C++提供了各種容器,這些容器應該比陣列更受歡迎。在這種情況下,我會建議std::array。如果您沒有std::array,則std::vector也可以使用。

void foobar(std::array<int, 64> board); 

該函數將複製按值傳入的數組。

0

第一個數組可以作爲參數傳遞,但調用的函數將直接在原始數組上運行,而不是自己的副本(謹防)。

void foo(int[8][8] board); 

二,標準(或定製如果需要的話)容器類使用更安全並且在需要時更容易複製。本地數組不會輕易複製,而不會有些詭異的技巧,此時使用容器類應該使您的代碼更易於閱讀。第三,這個問題看起來像遞歸算法的經典主題,它可能允許在同一個數組(或容器類)實例上完成所有工作,從而保持資源需求O(1):fixed gameboad size和已知的最大侵蝕深度。

相關問題