1

请给我一些指示,说明为什么我的代码不适用于此作业。我的想法是有一个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]);
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

不应该将您的最终解决方案状态与 size - 1 进行比较吗?

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