玄关求调输出多组重复数据
查看原帖
玄关求调输出多组重复数据
1042335
Tennantloyaldog楼主2024/4/27 20:44

玄关rt

#include <bits/stdc++.h>
using namespace std;
int m,n,sx,sy,fx,fy,t;
bool vis[105][105];
int x[4]={0,-1,0,1};
int y[4]={-1,0,1,0};
int ans=-1;
bool judge(int a,int b){
	if(a<1||b<1||a>n||b>n)return 0;
	if(vis[a][b]==1)return 0;
	return 1;
}
void dfs(int r,int c,vector<pair<int,int> > &v){
	if(r==fy&&c==fy){
		cout <<'('<<v[0].first<<','<<v[0].second<<')';
		for(int i=1;i<v.size();i++){
			cout << "->";
			cout <<'('<<v[i].first<<','<<v[i].second<<')';
		}
		cout<<endl;
		ans=0;
		return ;
	} 
	for(int i=0;i<4;i++){
		if(judge(r+x[i],c+y[i])){
			vis[r+x[i]][c+y[i]]=1;
			v.push_back(pair<int,int>(r+x[i],c+y[i]));
			dfs(r+x[i],c+y[i],v);
			vis[r+x[i]][c+y[i]]=0;
			v.pop_back();
		}
	}
}
int main(){
	cin >> m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin >> t;
			if(t==0)vis[i][j]=1;
		}
	}
	cin >> sx>> sy>>fx>>fy;
	vector<pair<int,int> > v;
	v.push_back(pair<int,int>(sx,sy));
	dfs(sx,sy,v);
	if(ans==-1)cout << ans;
    return 0;
} 
2024/4/27 20:44
加载中...