求助,我不理解!!!
  • 板块P1683 入门
  • 楼主kdy20100729
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/7/18 20:22
  • 上次更新2023/10/27 19:39:31
查看原帖
求助,我不理解!!!
367194
kdy20100729楼主2022/7/18 20:22

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

为啥第二个代码不行嘞(样例输出 7777

2022/7/18 20:22
加载中...