c++蒟蒻求助!!!
  • 板块P1238 走迷宫
  • 楼主Liu45318
  • 当前回复6
  • 已保存回复6
  • 发布时间2020/7/21 10:35
  • 上次更新2023/11/6 22:42:08
查看原帖
c++蒟蒻求助!!!
305925
Liu45318楼主2020/7/21 10:35
#include<iostream>
#include<cstdio>
using namespace std;
short map[20][20],L[10001][2];
bool M[20][20]={0},flag=false;
int endx,endy;
void dfs(int,int,int);
void print(int);
const int X[4]={-1,0,1,0},Y[4]={0,1,0,-1};
int main()
{
	int n,m,strx,stry;
	cin>>n>>m;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			cin>>map[i][j];
	cin>>strx>>stry>>endx>>endy;
	dfs(strx,stry,0);
	if (!flag) cout<<-1;
	return 0;
}
void dfs(int x,int y,int s)
{
	if (x==endx&&y==endy)
	{
		print(s);
		flag=true;
		return ;
	}
	for (int i=0;i<4;i++)
	{
		x+=X[i];y+=Y[i];
		if (map[x][y]&&!M[x][y])
		{
			M[x-X[i]][y-Y[i]]=true;
			L[s+1][0]=x-X[i];L[s+1][1]=y-Y[i];
			dfs(x,y,s+1);
			M[x-X[i]][y-Y[i]]=false;
		}
		x-=X[i];y-=Y[i];
	}
	return ;
}
void print(int a)
{
	for (int i=1;i<=a;i++)
		printf("(%d,%d)->",L[i][0],L[i][1]);
	printf("(%d,%d)",endx,endy);
	cout<<endl;
	return ;
}

只有60分。。。

通过下载数据点发现貌似是顺序搞错了???

但不知道怎么改啊!!!!!!!

救救孩子!!!!!!!!

2020/7/21 10:35
加载中...