#求助10分 哪里不对 谢谢
  • 板块P1683 入门
  • 楼主PA66666
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/25 22:02
  • 上次更新2025/7/26 11:57:15
查看原帖
#求助10分 哪里不对 谢谢
1724478
PA66666楼主2025/7/25 22:02
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m,sum=1,cnt=0;
	cin>>n>>m;
	int x,y;
	char s[n][m];
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
		{
			cin>>s[i][j];
			if(s[i][j]=='@')
			{
				x=i;
				y=j;
			}
			if(s[i][j]=='.') cnt++;
		}
	while(cnt!=0)
	{
		bool b=1;
		if(s[x][y+1]=='.') sum++,b=0,cnt--;//找安全的地方
		if(s[x][y-1]=='.') sum++,b=0,cnt--;
		if(s[x-1][y]=='.') sum++,b=0,cnt--;
		if(s[x+1][y]=='.') sum++,b=0,cnt--;
		if(b==1) break;
		if(s[x][y+1]=='.') y+=1;//修改坐标
		if(s[x][y-1]=='.') y-=1;
		if(s[x-1][y]=='.') x-=1;
		if(s[x+1][y]=='.') x+=1;
	}
	cout<<sum;
	return 0;
}
2025/7/25 22:02
加载中...