请给我一些指示,说明为什么我的代码不能用于此作业。我的想法是有一个index
(param)是Vector中的当前位置,target
(param)是数组中给定索引的值。然后我要么向上或向下移动,直到到达其中一个基本案例。但它不起作用。
主要问题是到目前为止它只输出错误的结果。
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]);
答案 0 :(得分:3)
可能不是整个答案,但这部分看起来不对:
int goUp = squares[index] + index;
int goDown = squares[index] - index;
我认为应该是
int goUp = index + squares[index];
int goDown = index - squares[index];
答案 1 :(得分:2)
不应将您的最终解决方案状态与大小进行比较 - 1?
if (target == 0 && index == squares.size() - 1 ) return true;