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; // 如果遍历全部解,那么这里就需要回溯;如果只关心是否能到达,可以不回溯 }

 

posted @ 2020-03-25 11:01  ren_zhg1992  阅读(231)  评论(0)    收藏  举报