求调
  • 板块P1238 走迷宫
  • 楼主zifeiwoye
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/7 20:12
  • 上次更新2024/12/7 22:22:22
查看原帖
求调
1387250
zifeiwoye楼主2024/12/7 20:12
#include <bits/stdc++.h>
using namespace std;

int a[20][20],b[20][20],d[4][2]={{1,0},{-1,0},{0,1},{0,-1}},m,n,sx,sy,mx,my,sum;
queue < pair <int,int> > q;

void print(){
	while(!q.empty())
	{
		int x=q.front().first,y=q.front().second;
		cout<<"->("<<x<<","<<y<<")";
		sum++;
	}
}

void dfs(int x,int y)
{
	if(x==mx&&y==my)
	{
		print();
		b[x][y]=a[x][y];
		q.pop();
	}
	for(int i=1;i<=4;i++)
	{	
		if(x+d[i][1]>0&&x+d[i][1]<=m&&y+d[i][2]>0&&y+d[i][2]<=n&&b[x+d[i][1]][y+d[i][2]]==1)
		{
			b[x+d[i][1]][y+d[i][2]]=0;
			q.push(make_pair(x+d[i][1],y+d[i][2]));
			dfs(x+d[i][1],y+d[i][2]);	
		}
	}
	b[x][y]=a[x][y];
	q.pop();
}
/*
1 0 0 1 0 1
1 1 1 1 1 1
0 0 1 1 1 0
1 1 1 1 1 0
1 1 1 0 1 1

5 6
1 0 0 1 0 1
1 1 1 1 1 1
0 0 1 1 1 0
1 1 1 1 1 0
1 1 1 0 1 1
1 1
5 6
*/
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
			b[i][j]=a[i][j];
		}
	}
	cin>>sx>>sy>>mx>>my;
	dfs(sx,sy);
	if(sum==0)
	{
		cout<<-1;
		return 0;
	}
	return 0;
}
2024/12/7 20:12
加载中...