AC Code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,sx,sy,ans;
char a[105][105];
bool vis[105][105];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
void dfs(int x,int y)
{
vis[x][y]=true;
for(int i=0; i<4; i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if (nx>0&&nx<=n&&y>0&&y<=m&&a[nx][ny]=='.'&&vis[nx][ny]==false)
{
ans++;
dfs(nx,ny);
}
}
return ;
}
signed main()
{
cin >> m >> n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin >> a[i][j];
if (a[i][j]=='@')
{
sx=i;
sy=j;
vis[sx][sy]=true;
}
}
}
dfs(sx,sy);
cout << ans+1;
return 0;
}
错误代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,sx,sy,ans;
char a[105][105];
bool vis[105][105];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
void dfs(int x,int y)
{
vis[x][y]=true;
for(int i=0; i<4; i++)
{
int nx=x+dx[i];
int ny=y+dy[i];
if (nx>0&&nx<=n&&y>0&&y<=m&&a[nx][ny]!='#'&&vis[nx][ny]==false)
{
ans++;
dfs(nx,ny);
}
}
return ;
}
signed main()
{
cin >> m >> n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin >> a[i][j];
if (a[i][j]=='@')
{
sx=i;
sy=j;
vis[sx][sy]=true;
}
}
}
dfs(sx,sy);
cout << ans+1;
return 0;
}
为啥第二个代码不行嘞(样例输出 77 )