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;
}