dfs模版

dfs

#include <stdio.h>

#include <string.h>

char Map[16][16];

int mv[16][16];

//mv[i][j] == 0 没有被访问

//mv[i][j] == 1 已经被访问

struct N

{

    int x,y;

} ;

int jx[] = { 0,-1, 0, 1};

int jy[] = { 1, 0,-1, 0};

int Min;

void dfs(int x,int y,int n,int m,int ans)

{

    if(ans >= Min)

    {

        return ;

    }

   if(Map[x][y] == 'Y')

    {       

       if(ans < Min)   

       {

            Min = ans;

        }

       return ;

    }

    N f;

    for(int i = 0; i < 4; ++i)

    {

        f.x = x + jx[i];

        f.y = y + jy[i];

        if(0 <= f.x && f.x < n && 0 <= f.y && f.y < m && mv[f.x][f.y] == 0 && Map[f.x][f.y] != '#')

        {

            mv[f.x][f.y] = 1;

            dfs(f.x,f.y,n,m,ans+1);

            mv[f.x][f.y] = 0;

        }

    }

}

int main()

{

    int n,m,i,j;

    while(scanf("%d %d",&n,&m) != EOF)

    {

        memset(mv,0,sizeof(mv));

        for(i = 0; i < n; ++i)

        {

            scanf("%*c%s",Map[i]);

        }

        for(i = 0; i < n; ++i)

        {

            for(j = 0; j < m; ++j)

            {

                if(Map[i][j] == 'X')

                    break;

            }

            if(j != m)

                break;

        }

        Min = (1<<20);

        dfs(i,j,n,m,0);

        if(Min == (1<<20))

        {

            printf("-1\n");

        }

        else

        {

            printf("%d\n",Min);

        }

    }

    return 0;

}

posted @   人艰不拆_zmc  阅读(364)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示