25分求助!
查看原帖
25分求助!
757421
bj12z_linzepei楼主2023/2/6 08:58
#include<bits/stdc++.h>
using namespace std;
int n,m,sn,sm,fn,fm,ans[2][101],a[101][101],book[101][101],tot=1,flag=0;
int tx[4]={0,-1,0,1};
int ty[4]={-1,0,1,0};
void dfs(int x,int y,int tot){
	if(x==fn&&y==fm){
		flag=1;
		cout<<"("<<sn<<","<<sm<<")";
		for(int i=1;i<=tot-1;i++){
			cout<<"-"<<">""("<<ans[1][i]<<","<<ans[2][i]<<")";
		}
		/*for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cout<<book[i][j]<<" ";
			}
			cout<<endl;
		}*/
		cout<<endl;
		return;
	}
	for(int i=0;i<4;i++){
		int l=x+tx[i],r=y+ty[i];
		if(l>=sn&&r>=sm&&l<=fn&&r<=fm&&a[l][r]==1&&book[l][r]==0){
			book[l][r]=1;
			ans[1][tot]=l;ans[2][tot]=r;
			dfs(l,r,tot+1);
			book[l][r]=0;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	cin>>sn>>sm>>fn>>fm;
	memset (book,0,sizeof(book));
	book[1][1]=1;
	dfs(sn,sm,tot);
	if(flag==0) cout<<"-1";
	//system("pause");
	return 0;
}
2023/2/6 08:58
加载中...