dfs 10分玄关
  • 板块P1238 走迷宫
  • 楼主zyhe2013
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/3/29 22:24
  • 上次更新2024/3/30 09:34:44
查看原帖
dfs 10分玄关
905073
zyhe2013楼主2024/3/29 22:24

各各大佬帮忙看看错哪了 代码;

#include <bits/stdc++.h>
using namespace std;

bool pd;
int n ,m ,a[20][20] ,x2 ,y2 ,dx[4] = {0,-1,0,1} ,dy[4] = {-1,0,1,0};
int xy[114514][2];
bool t[20][20]; 
int sc(int t)
{
    for(int i=1;i<t-1;i++)printf("(%d,%d)->",xy[i][1],xy[i][2]);
    printf("(%d,%d)\n",x2,y2); 
}	
void dfs(int i,int j,int t){
    if(!a[i][j])return;
    if(i==x2&&j==y2){
		pd=1;
		sc(t);
		return;
	}
    xy[t][1]=i;
	xy[t][2]=j;
	a[i][j]=0;
    dfs(i,j - 1,t + 1);
    dfs(i - 1,j,t + 1);
    dfs(i,j + 1,t + 1);
    dfs(i + 1,j,t + 1);
    xy[t][1] = 0;
	xy[t][2] = 0;
	a[i][j] = 1;
}

int main(){
	int x1 ,y1;
	cin>>n>>m;
	for(int i = 1;i <= n; i++)	{
		for(int j = 1;j <= m; j++){
			scanf("%d",&a[i][j]);
		}
	}
	cin>>x1>>y1>>x2>>y2;
	dfs(x1,y1,1);
	if(pd == 0)cout<<-1;
	return 0;
}
2024/3/29 22:24
加载中...