64,642
社区成员
发帖
与我相关
我的任务
分享
#include<cstdio>
#include<stdlib.h>
#include<iostream>
#include<string.h>
using namespace std;
int x,y,x0,y0;
int step[10];
char c[10][100][100];
int p=1;
int main(){
int i=0;
extern void solve(int,int,int,int);
for(;;){
i++;
p=i;
cin>>y>>x;
if(x==0&&y==0){
goto s;
}
for(int j=1;j<=x;j++){
for(int k=1;k<=y;k++){
cin>>c[i][j][k];
if(c[i][j][k]=='@'){
x0=j;
y0=k;
}
}
}
solve(x,y,x0,y0);
}
s:
for(int i=1;i<=4;i++){
cout<<step[i]<<"\n";
}
return 0;
}
void solve(int x1,int y1,int a,int b){
/*cout<<"\n";
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
//cout<<c[p][i][j];
if(i==a&&j==b){
cout<<'@';
}
else{
cout<<c[p][i][j];
}
}
//
cout<<"\n";
}
cout<<step[p];*/
c[p][a][b]='#';
step[p]++;
if(a>1){
if(c[p][a-1][b]!='#'){
solve(x1,y1,a-1,b);
}
}
if(a<x){
if(c[p][a+1][b]!='#'){
solve(x1,y1,a+1,b);
}
}
if(b>1){
if(c[p][a][b-1]!='#'){
solve(x1,y1,a,b-1);
}
}
if(b<y){
if(c[p][a][b+1]!='#'){
solve(x1,y1,a,b+1);
}
}
}