15分,求助
查看原帖
15分,求助
1194979
I_AM_joker楼主2024/8/15 09:00
#include <iostream>
#include <cstring>
using namespace std;
struct pointin{
	int x,y,fx;
};
int n,m,bx,by,zx,zy,qjbl;
bool ansf=false;
int vis[7][17];
int map[7][17];
char lx[10086];
pointin point[100];
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};//0:左 1:上 2:右 3:下 
void print(int num){
	for (int i = 1;i<=num-1;i++){
		cout<<"("<<point[i].x<<","<<point[i].y<<")->";
	}
	cout<<"("<<point[num].x<<","<<point[num].y<<")"<<endl;
}
void bfs(int x,int y,int step){
	if (x==zx&&y==zy){
		point[step].x=zx;point[step].y=zy;
		qjbl=1;
		print(step);
		return ;
	}
	int yesican=0;
	for (int i =0;i<4;i++){
		point[step].x=x,point[step].y=y;
		int nx=x+dx[i],ny=y+dy[i];
		if ((map[nx][ny]==1&&vis[nx][ny]==0)&&(nx>=1&&nx<=n&&ny>=1&&ny<=m)){
			vis[nx][ny]=1;
			yesican=1;
			step++;
			bfs(nx,ny,step);
			vis[nx][ny]=0;
			step--;
		}
	}
	return ;
}
int main(){
	qjbl=0;
	cin>>n>>m;
	memset(vis,0,sizeof(vis));
	for (int i = 1;i<=n;i++){
		for (int j = 1;j<=m;j++){
			cin>>map[i][j];
		}
	}
	cin>>bx>>by>>zx>>zy;
	bfs(bx,by,1);
	if (qjbl==0){
		cout<<-1<<endl;
	}
	return 0;
}

代码如上

2024/8/15 09:00
加载中...