以下函數使用三個單詞對象,並檢查每個單詞的字母座標(在表格中)。這個想法是從一個沒有相交字母座標的列表中獲得三個單詞的組合。但是,當您有超過600000種可能的組合時,這會變得非常耗時。有什麼辦法可以使這個座標比較函數更有效嗎?
bool lettersIntersect(word one, word two, word three)
{
for(int i = 0; i < one.getLength(); i++)
for(int j = 0; j < two.getLength(); j++)
if(one.getLetterPosition(i).x == two.getLetterPosition(j).x && one.getLetterPosition(i).y == two.getLetterPosition(j).y)
return true;
for(int i = 0; i < two.getLength(); i++)
for(int j = 0; j < three.getLength(); j++)
if(two.getLetterPosition(i).x == three.getLetterPosition(j).x && two.getLetterPosition(i).y == three.getLetterPosition(j).y)
return true;
for(int i = 0; i < three.getLength(); i++)
for(int j = 0; j < one.getLength(); j++)
if(three.getLetterPosition(i).x == one.getLetterPosition(j).x && three.getLetterPosition(i).y == one.getLetterPosition(j).y)
return true;
return false;
}
有沒有更有效的方法呢?
從它看起來像是參數(容器)的角度來看,以基本的基礎開始:通過const引用傳遞它們。除此之外,知道這個類的定義('word')在回答你的問題時可能會有很長的路要走。 – WhozCraig 2013-04-04 13:00:44