2013-02-28 34 views
1

如果我創建一個縱橫字謎,例如我想存儲填充在9乘9格的單詞。 我認爲是一個二維數組,但只能存儲整個單詞而不是單詞。 即使每個單詞都存儲爲一個對象(指示方向),我也不會知道哪些單詞相交哪些單詞。 有人能指引我正確的方向嗎?填字遊戲字(跨越和下降)存儲?

+1

你不應該擔心的話相交的位置。請參閱@Valentinas的答案。 – 2013-02-28 01:37:30

+0

如果有人看到這個問題,我建議你先考慮一下你想在數據結構上運行的算法,然後*選擇一個合適的(高效的,易於操作,反映所需的操作)數據結構。 – 2013-10-09 16:45:00

回答

0

我節省了起點和方向,然後把它們存儲在一個對象即

{'starfish':{'direction':'horizontal','position':[0,4]}, 'ratchet':{'direction':'vertical', 'position':[0,8]} 
3

保存方向(上/下/左/右)和開始座標。

例如

First 
    e 
    c 
    o 
    n 
third 

第一個將被放置在左側1,0;第二將會下降到5,0;第三位在左邊0,6。

您也可以字符保存到二維數組,這個特殊的例子是:

[ 
    [null, 'f','i', 'r', 's', 't'], 
    [null, null, null, null, 'e', null ], 
    [null, null, null, null, 'c', null ], 
    [null, null, null, null, 'o', null ], 
    [null, null, null, null, 'n', null ], 
    ['t', 'h', 'i', 'r', 'd', null ] 
] 

節省給你有話和了解他們的起點優勢的第一種方式,但並不強制它以堅持填字格式(例如很難知道哪些字符應該是相同的,等等)。第二種方式強制執行此操作,但難以確定這些詞。也許結合這兩個?

1

有趣的問題。爲了好玩,我會從這裏開始:

class CrosswordItem 
{ 
    int startX; 
    int startY; 
    string word; 
} 

祝您好運,您的問題!