求求大佬帮忙看看怎么改
查看原帖
求求大佬帮忙看看怎么改
1413948
yuanshen10086楼主2025/1/22 14:31
#include<bits/stdc++.h>
using namespace std;
long long t,n,m,a[2005][2005],vis[2005][2005],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
char b[2005][2005];
struct f{
	int x,y,js;
	string s;
};
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>t;
	while(t--){
		queue<f>q;
		cin>>n>>m;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>b[i][j];
				if(b[i][j]=='1') a[i][j]=1;
			}
		}
		q.push({1,1,0,""});
		vis[1][1]=1;
		int f=1;
		while(q.size()){
			int x=q.front().x,y=q.front().y,js=q.front().js;
			string s=q.front().s;
			q.pop();
			if(x==n && y==m){
				f=0;
				cout<<js<<"\n"<<s<<"\n";
				break;
			} 
		 	for(int i=0;i<4;i++){
	     		int nx=x+dx[i],ny=y+dy[i];
	     		if(nx>=1 && nx<=n && ny>=1 && ny<=m && a[nx][ny]!=a[x][y] && vis[nx][ny]==0){
	     			vis[nx][ny]=1;
	     			if(nx==x+1&&y==ny) q.push({nx,ny,js+1,s+"D"});
	     			if(nx==x-1&&y==ny) q.push({nx,ny,js+1,s+"U"});
	     			if(nx==x&&y+1==ny) q.push({nx,ny,js+1,s+"R"});
					if(nx==x&&y-1==ny) q.push({nx,ny,js+1,s+"L"});
				}
			}
		}
		if(f==1) cout<<-1<<"\n";
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				a[i][j]=0,vis[i][j]=0;
			}
		}
	}
	return 0;
	}
2025/1/22 14:31
加载中...