zoukankan      html  css  js  c++  java
  • HDU 1312

    题意:一个man站在@上,只能走上下左右四个方向,且不能踩到"#",问最多能猜到多少个".";

    简单dfs,既然只能走上下左右,那就把所有的方向全部遍历一遍;

    AC代码:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    const int dx[4]={1,0,-1,0};
    const int dy[4]={0,1,0,-1};
    char s[30][30];
    int cnt,n,m;
    int vis[30][30];
    void dfs(int x,int y)
    {
        cnt++;
        vis[x][y]=1;
        for(int i=0;i<4;i++)
        {
            int x1=x+dx[i];
            int y1=y+dy[i];
            if(s[x1][y1]=='.'&&x1>=0&&x1<n&&y1>=0&&y1<m&&vis[x1][y1]==0)//条件判断,符合就继续递归
            {
                dfs(x1,y1);
            }
        }
    }
    int main()
    {
        while(~scanf("%d%d",&m,&n),n||m)
        {
            cnt=0;
            memset(vis,0,sizeof(vis));
            for(int i=0;i<n;i++)
            {
                scanf("%s",s[i]);
            }
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(s[i][j]=='@')
                    {
                        dfs(i,j);//找到那个男的的坐标开始搜;
                    }
                }
            }
            printf("%d
    ",cnt);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    概率期望训练之五
    概率期望训练之四
    JavaScript Source Map详解
    JSON.parse、JSON.stringify
    Linux cp命令直接覆盖不提示方法
    Service Worker
    HTML5 应用程序缓存
    二分图
    Tarjan
    FFT迭代加深 & NTT 多项式求逆
  • 原文地址:https://www.cnblogs.com/qioalu/p/4905079.html
Copyright © 2011-2022 走看看