搜索虐我千万遍@_@-----一道搜索的水题,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