HDU 1312 Red and Black【DFS】

搜索虐我千万遍@_@-----一道搜索的水题,WA了好多好多次@_@发现是n,m搞反了-_-

题意--

给出m行 n列的矩形,其中从@出发,不能跳到#,只能跳到'.'问最多能够跳到多少块'.' 直接搜就好,不用剪枝

#include <stdio.h>  

#include <string.h>   

int n,m,cnt;  

char map[1000][1000];  

int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};

  

void dfs(int x,int y)  

{  

    cnt++;  

    map[x][y] = '#';  

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

    {  

        int a = x+dir[k][0];  

        int b = y+dir[k][1];  

        if(a<=m && b<=n && a>0 && b>0 && map[a][b] == '.')  

            dfs(a,b);  

    }  

    return;  

}  

  

int main()  

{  

    int i,j,x,y;  

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



   {

	   for(i = 1; i<=m; i++)  

        {  

		    getchar();

            for(j =1; j<=n; j++)  

            {  

                scanf("%c",&map[i][j]);  

                if(map[i][j] == '@')  

                {  

                    x= i;  

                    y= j;  

                }  

            }  

            

        }  

        cnt = 0;  

        dfs(x,y);  

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

   } 

    return 0;  

}  

  加油学搜索--go--go

你可能感兴趣的:(HDU)