我目前正在編寫一些代碼來處理棋盤。 Go板被表示爲一系列顏色。該陣列具有size
×size
條目並且代表二維方形板。快速算法在棋盤上清除棋盤
enum color {
EMPTY,
BLACK,
WHITE,
};
struct go_board {
unsigned int size;
enum color intersections[];
};
當enum color player
移動時,下面的過程適用:(參見rules)
- [...]
- 的點P,不着色C,被認爲達到C,如果有是P的顏色從P點到C點的(垂直或水平方向)相鄰點的路徑。
- 清除顏色是清空顏色中未達到空白的所有點的過程。
- [...]
- 移動包括清除對方顏色,然後清除自己的顏色。
我正在尋找一種快速(在計算複雜性和實際速度方面)算法來清除板子。你可以幫我嗎?
已經測量你的「慢」的方法,並確定它是在應用程序中的瓶頸?首先:使其正確工作;不要擔心表演。 – pmg 2013-02-12 11:03:35
@pmg我想到的「慢」的方法非常不好,我還沒有測試過。計算複雜度爲O(n4),其中n是板的大小。 – fuz 2013-02-12 11:05:03
19^4是*僅* 130321 – pmg 2013-02-12 11:06:33