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

浙公网安备 33010602011771号