我可以将向量中的位置获取到每个邻居的每个点吗?

时间:2019-05-17 15:06:54

标签: c++ pointers vector nodes

编辑:我的目标是能够找到文本文件中将通过cin输入的字符迷宫的转义路径。因此,我创建了一个包含字符向量的向量来保存此迷宫贴图。我的下一步是使用堆栈或队列找到从起点到终点的逃生路径。

例如:地图可能是

# * #
* * D
S * #

其中#是墙壁,*是要在上面行走的开放空间,S是起点,D是终点。 输出解决方案将是:ENEE。

要执行此操作,我希望矩阵中的每个位置都指向其邻居,这样,如果我在某个位置,就可以访问存储在当前北,南,东和西位置的字符位置。

解决此问题的最佳方法是什么?我应该以不同的方式生成矩阵,还是可以分别添加指针?

这里是向量的向量:

vector<vector<char>> GetMap(int& M, int& N)
{
    vector<vector<char>> matrix{}; 
    char char_buf;

    for (int rows = 0; rows < M; rows++)
    {
        matrix.push_back(vector<char>()); 
        for (int cols = 0; cols < N; cols++)
        {
            cin >> char_buf; 
            matrix.back().push_back(char_buf);
        }
    }

    return matrix;
}

1 个答案:

答案 0 :(得分:0)

我假设您的意思是如果您有一个像这样的向量:

vector<vector<char>> matrix = {{'A', 'B', 'C', 'D'},
                               {'E', 'F', 'G', 'H'},
                               {'I', 'J', 'K', 'L'},
                               {'M', 'N', 'O', 'P'}};

还有一个索引,例如[2,2]('K'),您希望能够导航“北”(至“ G”),南(至“ O”),东(至“ L” )或西(以“ J”开头)。

这里不需要指针,我们实际上可以通过一些简单的算法来完成!

这是我模拟的示例,其中您具有[x,y]形式的一些坐标和[N,S,E,W]中的dir

switch(dir) {
    case 'N':
    case 'n':
        y = (y - 1) % matrix.size();
        break;
    case 'S':
    case 's':
        y = (y + 1) % matrix.size();
        break;
    case 'E':
    case 'e':
        x = (x + 1) % matrix[y].size();
        break;
    case 'W':
    case 'w':
        x = (x - 1) % matrix[y].size();
        break;
}

在此处查看实际操作:ideone