請給我一些關於爲什麼我的代碼不適合這個任務的指針。我的想法是有一個index
(param),它是Vector中的當前位置,以及target
(param),它是數組中給定索引的值。然後,我可以上下移動,直到到達其中一個基本情況。但它不工作。C++:如何解決這個遞歸拼圖(subset-sum style)
主要的問題是,它迄今只輸出錯誤的結果。
bool RecursivePuzzle :: SolvableReal(Vector<int> & squares, int index, int target)
{
if (target == 0 && index == squares.size()) return true;
if (index >= squares.size()) return false;
if (index < 0) return false;
int goUp = squares[index] + index;
int goDown = squares[index] - index;
return SolvableReal(squares, goUp, squares[index]) ||
SolvableReal(squares, goDown, squares[index]);
你說的「它不工作」是什麼意思?它是否陷入無限循環? –
一個錯誤是您沒有考慮潛在的無限循環。它仍然可以通過一些配置完成,所以當你說「它不起作用」時,你的意思是什麼?它會永遠運行嗎?它是段故障嗎? –
除非我擁有[3,0,0,3]的配置(因爲它會在這兩個數字之間轉換),否則它不會陷入無限循環。但我知道這一點,這不是主要問題。這是它輸出錯誤的結果,只是錯誤的。 –