DFS模板

一般的DFS模板

void DFS(int graph[][], int used[], int x, int y)
{
    // 1、如果与目标坐标相同,则成功
    if (graph[x][y] == graph[goal_x][goal_y]) {     
        printf("successful");
        flag = 1;
        return ;
    }
    // 2、遍历四个方向
    for (int i = 0; i != 4; ++i) {    
        //3、如果没有走过这个格子          
        int new_x = x + px[i], new_y = y + py[i];
        if (new_x >= 0 && new_x < n && new_y >= 0 
            && new_y < m && used[new_x][new_y] == 0 && !flag) {
            
            used[new_x][new_y] = 1;     //4、将该格子设为走过

            DFS(graph, used, new_x, new_y);      //5、递归下去

            used[new_x][new_y] = 0;//6、状态回溯,退回来,将格子设置为未走过
        }
    }
}

 

posted @ 2020-03-10 15:17  ren_zhg1992  阅读(241)  评论(0)    收藏  举报