Red and Black

链接

[http://poj.org/problem?id=1979]

题意

问能走多少格子

分析

简单基础DFS

代码

#include<iostream>
#include<cstdio>
#include<string>
#include<string.h>
using namespace std;
const int N=22;
char mp[N][N];
int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int n,m; 
int ans;
void dfs(int x,int y){
	for(int i=0;i<4;i++){
	   	 int x2=x+d[i][0],y2=y+d[i][1];
	   	 if(x2<0||x2>=m||y2<0||y2>=n) continue;
	   	 if(mp[x2][y2]=='.'){
	   	 	ans++;
	   	 	mp[x2][y2]='#';
	   	 	dfs(x2,y2);
			}
	   }
}
int main(){
	int sx,sy;
	//freopen("in.txt","r",stdin);
	while(cin>>n>>m&&(n+m)){
		for(int i=0;i<m;i++)
		for(int j=0;j<n;j++)
		{
			cin>>mp[i][j]; if(mp[i][j]=='@') sx=i,sy=j;
		}
	   ans=1;
	   mp[sx][sy]='#';
	   dfs(sx,sy);
	   cout<<ans<<endl;
	}
	return 0;
} 
posted @ 2018-12-05 19:50  ChunhaoMo  阅读(119)  评论(0编辑  收藏  举报