dfs的通用模型
通用模型
// 方向数组
static int nextX[] = { -1, 0, 1, 0}; static int nextY[] = { 0, -1, 0, 1}; void shortPath(vector<vector<int>>& grap, vector<vector<int>>& used, int ex, int ey, bool flag, int i, int j, int steps, vector<int>& ret) { if (i == ex && j == ey) { ..... cout << "arrive:" << endl; // 增加调试信息,方便定位 return; } used[i][j] = 1;
// 上下左右深搜 for (uint8_t k = 0; k < 4; k++) { int newx = i + x[k]; int newy = j + y[k]; if (newx >= 0 && newx < (int)grap.size() && newy >= 0 && newy < (int)grap[0].size() && used[newx][newy] == 0) { if (grap[newx][newy] == XXX) { shortPath(grap, used, ex, ey, flag, newx, newy, steps + 1, ret); } else { ..... shortPath(grap, used, ex, ey, flag, newx, newy, steps + 1, ret); } } } used[i][j] = 0; // 如果遍历全部解,那么这里就需要回溯;如果只关心是否能到达,可以不回溯 }

浙公网安备 33010602011771号