求调
  • 板块灌水区
  • 楼主guosichen123456
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/15 08:14
  • 上次更新2024/9/15 11:53:52
查看原帖
求调
1355742
guosichen123456楼主2024/9/15 08:14
#include<bits/stdc++.h>
using namespace std;
char a[101][101];
int x1,y1,x2,y2;
int n,f=0,b[1001][2],dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
void print(int step)
{
	f=1;
	for(int i=1;i<=step;i++)
	{
		if(i==1)cout<<"("<<b[i][0]<<","<<b[i][1]<<")";
		else cout<<"-"<<"("<<b[i][0]<<","<<b[i][1]<<")";
	}
}
void dfs(int step,int x,int y)
{
	b[step][0]=x;
	b[step][1]=y;
	if(x==x2&&y==y2)
	{
		print(step);
		exit(0);
	} 
	for(int i=0;i<4;i++)
	{
		int nx=x+dir[i][0],ny=y+dir[i][1];
		if(nx>n||ny>n||nx<1||ny<1||a[nx][ny]=='1')continue;
		a[nx][ny]='1';
		dfs(step+1,nx,ny);
		a[nx][ny]='0';
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}
	cin>>x1>>y1>>x2>>y2;
	a[1][1]='1';
	dfs(1,x1,y1);
	if(f==0)cout<<"error";
	return 0;	
}

//一个dfs迷宫,第五行报错,望dalao指点

2024/9/15 08:14
加载中...