本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312
本题要看能走的地方有多少个,不能走对角,所以选取人物所在的地方,看其四个方向是否可以走,并将可以走的标
记为不可走,用一个数标记查找的次数即为可走的地方的个数,AC代码,递归写的:
#include<stdio.h>
char a[22][22];
int n,m;
int F(int x,int y){
if(a[x][y]=='#')
return 0;
if(x>m||x<1||y>n||y<1)
return 0;
a[x][y]='#';
return 1+F(x-1,y)+F(x+1,y)+F(x,y-1)+F(x,y+1);
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF&&n|m){
int i,j,x,y;
for(i=1;i<=m;i++){
getchar();
for(j=1;j<=n;j++){
scanf("%c",&a[i][j]);
if(a[i][j]=='@')
x=i,y=j;
}
}
printf("%d\n",F(x,y));
}
return 0;
}