深搜惹了谁?\//\\/
查看原帖
深搜惹了谁?\//\\/
752953
sLMxf楼主2022/10/22 12:06
#include<bits/stdc++.h>
using namespace std;
char a[330][330];
int  t[330][330];
int beginx,beginy;
int wx,wy;
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
int n,m;
void find(char x)
{
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			if(i==wx&&j==wy) continue;
			if(a[i][j]==x)
			{
				wx=i,wy=j;
				return;
			}
		}
	return;
}
int dfs(int x,int y,int time)
{
	if(t[x][y]<time) return t[x][y];
	t[x][y]=time;
	if(a[x][y]=='=') return t[x][y];
	if('A'<=a[x][y]&&a[x][y]<='Z')
	{
		wx=x;wy=y;
		find(a[x][y]);
		return dfs(wx,wy,time+1);
	}
	int ans=INT_MAX;
	for(int i=1;i<=4;i++)
	{
		int newx=x+dx[i],newy=y+dy[i];
		if(a[newx][newy]=='#') continue;
		ans=min(ans,dfs(newx,newy,time+1));
	}
	return ans;
}
int main()
{
	memset(a,'#',sizeof(a));
	memset(t,n*m,sizeof(t));
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			if(a[i][j]=='@') beginx=i,beginy=j;
		}
	cout<<dfs(beginx,beginy,0);
	return 0;
}

为啥输出为0???

2022/10/22 12:06
加载中...