30分求救
查看原帖
30分求救
482018
Otto_Joyce楼主2023/7/1 13:15
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+10;
template <typename T> void read(T &x) {
	x=0; char c=getchar();int f=1;
	for (;!isdigit(c);c=getchar())if(c=='-')f=-1;
	for (;isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^48);
	x*=f;
}
const int dx[] = {1, 0, -1, 0}; 
const int dy[] = {0, 1, 0, -1};
int w,h,xx,yy,xxx,yyy,b,oi=-1;
char a[maxn][maxn];
int bfs(int x,int y)
{
	int n=0;
	if (xx==xxx&&yy==yyy)
	{
		return n;
	}
	for (int i=0;i<4;i++)
	{
		int nx = x + dx[i];
		int ny = y + dy[i];
		if (oi!=-1&&a[nx][ny]!='*'&&a[nx][ny]=='.')
		{
			if((i%2==0&&oi%2==1)||(i%2==1)&&(i%2==0))
			{
				n++;
				oi=i;
			}
		}
		if (nx==xxx&&ny==yyy)
		{
			return n;
		}
		
	}
}
int main()
{
	read(w);read(h);
	for (int i=1;i<=w;i++)
	{
		for (int j=1;j<=h;j++)
		{
			cin>>a[i][j];
			if (a[i][j]=='C'&&b==0)
			{
				xx=i;
				yy=j;
				b=1;
			}
			else if (a[i][j]=='C'&&b==1)
			{
				xxx=i;
				yyy=j;
			}
		}
	}
	int ans=bfs(xx,yy);
	cout<<ans/2<<endl;
	return 0;
}
2023/7/1 13:15
加载中...