90分求条
查看原帖
90分求条
1318798
xuzitu楼主2025/1/12 20:27
#include<bits/stdc++.h>
using namespace std;
bool vis[120][120];
short r,c;
int ansn;
short dx[4]={0,0,1,-1};
short dy[4]={-1,1,0,0};
short ans[100100][2];
bool bfs(int x,int y){
	if(x==r&&y==c){
		ans[ansn][0]=x;ans[ansn][1]=y;ansn++;return 1;
	}
	for(int i=0;i<4;i++){
		int nx=x+dx[i],ny=y+dy[i];
		if(nx>=1&&nx<=r&&ny>=1&&ny<=c&&!vis[x][y]){
			vis[x][y]=1;
			if(bfs(nx,ny)){
				ans[ansn][0]=x;ans[ansn][1]=y;ansn++;return 1;
			}
			vis[x][y]=0;
		} 
	}
	return 0;
}
int main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			char a;
			cin>>a;
			if(a=='*')vis[i][j]=1;
		}
	}
	int a=bfs(1,1);
	for(int i=ansn-1;i>=0;i--){
		cout<<ans[i][0]<<' '<<ans[i][1]<<"\n";
	}
	return 0;
}

TLE了一个点

2025/1/12 20:27
加载中...