1

私のコードがこの割り当てで機能しない理由について、いくつかの指針を教えてください。私の考えはindex、Vector内の現在の場所であるtarget(param)と、配列内の指定されたインデックスの値である(param)を持つことです。次に、ベースケースの1つに到達するまで上下に移動します。しかし、それは機能しません。

主な問題は、これまでのところ間違った結果しか出力しないことです。

ここに画像の説明を入力してください

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]);
4

2 に答える 2

3

おそらく全体の答えではありませんが、この部分は間違っているように見えます:

int goUp = squares[index] + index;
int goDown = squares[index] - index;

私はそれがすべきだと思います

int goUp = index + squares[index];
int goDown = index - squares[index];
于 2012-12-15T23:40:18.197 に答える
2

最終的なソリューションの状態をサイズ-1と比較するべきではありませんか?

if (target == 0 && index == squares.size() - 1 ) return true;
于 2012-12-15T23:36:16.213 に答える