代码:深搜入门题,注意w是列数,h是行数即可~
#include<iostream>
#include<cstring>
using namespace std;
char cizhuan[30][30];
int w,h;
int x,y;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};//记录方向
int dfs(int x,int y){
int ans=1;
cizhuan[x][y]='!';//标记已访问过的
for(int i=0;i<4;i++){
int a=x+dx[i],b=y+dy[i];
if(a&&a<=h&&b&&b<=w&&cizhuan[a][b]=='.')
ans+=dfs(a,b);
}
return ans;
}
int main()
{
while(cin>>w>>h){
memset(cizhuan,'#',sizeof(cizhuan));
if(!w&&!h) break;
for(int i=1;i<=h;i++)//注意h是行数!
for(int j=1;j<=w;j++){
cin>>cizhuan[i][j];
if(cizhuan[i][j]=='@'){
x=i;
y=j;
}
}
cout<<dfs(x,y)<<endl;
}
return 0;
}
ps:最近摸鱼好严重。。主要是动规卡住了TwT,以后要更努力才行!
有用的话就点赞评论收藏嗷!!