蒟蒻求助
  • 板块P1238 走迷宫
  • 楼主Drind
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/7/27 08:49
  • 上次更新2023/11/6 22:09:44
查看原帖
蒟蒻求助
305854
Drind楼主2020/7/27 08:49

RT,提交上去20分,看起来没错了...

#include<iostream>
using namespace std;
int goy[5]={0,1,0,0,-1},gox[5]={0,0,1,-1,0},start[3],over[3],n,m,a[16][16]={0},w[226][3],sum=0,b[16][16]={0};

void print(int n)
{
	int i;
	cout<<"("<<start[1]<<","<<start[2]<<")";
	for(i=2;i<=n;i++)
	{
		cout<<"->("<<w[i][1]<<","<<w[i][2]<<")";
	}
	cout<<endl;
	sum++;
	return;
}

void dfs(int x,int y,int t)
{
	int i,tx,ty;
	if (x==over[1]&&y==over[2])
	{
		print(t);
		return;
	}
	for(i=1;i<=4;i++)
	{
		tx=x;
		ty=y;
		tx+=gox[i];
		ty+=goy[i];
		if (tx<1||tx>n||ty<1||ty>n)
			continue;
		if (a[tx][ty]==1&&b[tx][ty]==0)
		{
			b[tx][ty]=1;
			w[t][1]=tx,w[t][2]=ty;
			//cout<<tx<<" "<<ty<<endl; 
			dfs(tx,ty,t+1);
			b[tx][ty]=0;
		}
	} 
}

int main()
{
	cin>>n>>m;
	int i,j;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			cin>>a[i][j];
	cin>>start[1]>>start[2]>>over[1]>>over[2];
	dfs(start[1],start[2],1);
	if (sum==0)
		cout<<-1;
	return 0;
}
2020/7/27 08:49
加载中...