我被要求解决高级编程课程中的一个问题,即“假设从 index[0][0] 到 index[n][n] 的 0 和 1 矩阵中是否存在任何水平 - 垂直方式的 '0?” 并引导可通过递归函数求解。在下一节课中,导师解决了它,我不明白它是如何工作的。我把代码放在下面。
#include <iostream>
#include <vector>
using namespace std;
#define N 10
bool path(int d[][N], int n, int i, int j)
{
if (i < 0 || j < 0 || i >= n || j >= n || d[i][j] == 1)
{
return false;
}
if (d[i][j] == 0)
{
d[i][j] = 1;
}
if (d[i][j] == 2)
{
return true;
}
return path(d, n, i, j + 1) || path(d, n, i, j - 1) || path(d, n, i + 1, j) || path(d, n, i - 1, j);
}
int main()
{
int n;
cin >> n;
int c[n][N];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> c[i][j];
}
}
c[n - 1][n - 1] = 2;
if (path(c, n, 0, 0))
{
cout << "YES";
}
else
{
cout << "NO";
}
return 0;
}
有人可以像我“eli5”一样向我解释吗?