递归迷宫:当多个路径时

时间:2015-11-08 10:30:04

标签: c++ recursion maze

以下是我希望使用递归解决的迷宫的表示。 S是起点,F是终点。顶部和左侧的数字代表坐标。

我已编写代码,但问题是当当前位置为3,2时,下一个当前位置有3个选项:top,left和down。

如果我删除了向左移动的选项,那么它就会被正确解决并且输出为"迷宫未解决"因为当前正数永远不会达到F(完成坐标)。

但是,在向左的情况下,我得不到解决方案,并且运行无限循环。

enter image description here

这里是代码的一部分(仅包括方向== 3,这意味着如果下一步将向左移动):

bool solveRecursive(char grid[][6],int siz, int curRow, int curCol, int direction,bool check)
{

while(check==0)
{
     if(curRow==4 && curCol==0)
     {
         check = 1;

     }

 else if (direction == 3)   // If open space in west
    {
        //}
        if(grid[curRow][curCol-1] == '.')
        {
            curCol--;
            check = solveRecursive(grid,siz,curRow,curCol,3,check);
        }

        if (grid[curRow-1][curCol] == '.')
        {
            curRow--;
            check = solveRecursive(grid,siz,curRow,curCol, 0,check);
        }

        else if (grid[curRow+1][curCol] == '.')
        {
            curRow++;
            check = solveRecursive(grid,siz,curRow, curCol, 2,check);
        }
        else
            return 0;
    }
}
return check;

}

0 个答案:

没有答案