ACM-DFS Template

 

自己写的DFSTemplate:

// DFS_Template.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

//DFS的思想是:一直向下搜索
//内部逻辑有两种:
//1.不走:找到解 or 走不下去了
//2.走:满足条件的下一个状态重复进行DFS



#include <iostream>
#include <string.h>
using namespace std;
const int N = 10;
int visit[N][N], map[N][N];
int dir[4][2] = { 1, 0, -1, 0, 0, 1, 0, -1 };

void DFS(int x,int y)
{
    
    //判断是否满足解
        

    //判断是否走不下去了

    for (int i = 0; i < 4; i++)
    {
        int nx = x + dir[i][0];
        int ny = y + dir[i][1];
        //判断新点是否满足继续搜索的条件
        if (nx >= 0 && nx <= N && ny >= 0 && ny <= N && visit[nx][ny] == 0)
        {
            //标记点
            visit[x][y] = 1;//最好把vis标记放在DFS函数外面,这样子集树的结构比较明显,调试也方便
            DFS(nx, ny);

        }    
            


    }
}


int main()
{
    //初始化
    memset(visit, 0, sizeof(visit));
    
    //标记点
    visit[0][0] = 1;
    DFS(0, 0);

}
 

 

posted @ 2018-03-04 18:31  小小小的程序猿  阅读(175)  评论(0编辑  收藏  举报
window.onload = function(){ $("#live2dcanvas").attr("style","position: fixed; opacity: 0.7; left: 70px; bottom: 0px; z-index: 1; pointer-events: none;") }