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
",cnt);  
   } 
    return 0;  
}  

  加油学搜索--go--go

原文地址:https://www.cnblogs.com/wuyuewoniu/p/4274881.html