H

- 题目大意

      就是求和‘@‘相连的‘.’有多少个(包括@,还有#是无法通过的)。

- 解题思路

      用DFS即可解出

- 代码

#include<cstdio>
#include<cstring>
using namespace std;
char maps[40][40];
int vis[40][40];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
int sum,n,m;
int dfs(int x,int y)
{

    for(int i=0;i<4;i++)
    {
        int xx=dx[i]+x;
        int yy=dy[i]+y;
        if(maps[xx][yy]=='.'&&vis[xx][yy]==0&&xx>=0&&yy>=0&&xx<m&&yy<n)
           {
               sum++;
               vis[xx][yy]=1;
               dfs(xx,yy);
           }

    }
    return sum;
}

int main()
{
    int t,x,y;
    scanf("%d",&t);
    for(int i=1;i<=t;i++)
    {
        memset(vis,0,sizeof(vis));
        memset(maps,0,sizeof(maps));
        scanf("%d%d",&n,&m);
        sum=1;
        getchar();
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
             scanf("%c",&maps[i][j]);
                if(maps[i][j]=='@')
                {
                    x=i;
                    y=j;
                }

            }
           getchar();
        }

    int tmp=dfs(x,y);
    printf("Case %d: %d
",i,tmp);
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/alpacadh/p/8431502.html