标签:
题意:一个man站在@上,只能走上下左右四个方向,且不能踩到"#",问最多能猜到多少个".";
简单dfs,既然只能走上下左右,那就把所有的方向全部遍历一遍;
AC代码:
#include <stdio.h> #include <string.h> #include <math.h> const int dx[4]={1,0,-1,0}; const int dy[4]={0,1,0,-1}; char s[30][30]; int cnt,n,m; int vis[30][30]; void dfs(int x,int y) { cnt++; vis[x][y]=1; for(int i=0;i<4;i++) { int x1=x+dx[i]; int y1=y+dy[i]; if(s[x1][y1]==‘.‘&&x1>=0&&x1<n&&y1>=0&&y1<m&&vis[x1][y1]==0)//条件判断,符合就继续递归 { dfs(x1,y1); } } } int main() { while(~scanf("%d%d",&m,&n),n||m) { cnt=0; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { scanf("%s",s[i]); } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(s[i][j]==‘@‘) { dfs(i,j);//找到那个男的的坐标开始搜; } } } printf("%d\n",cnt); } return 0; }
标签:
原文地址:http://www.cnblogs.com/qioalu/p/4905079.html