超时求调
查看原帖
超时求调
1420919
awdfkewd楼主2024/8/24 08:36
#include"iostream"
#include"string"
#include"algorithm"
using namespace std;
char board[1010][1010];
string c={};
int n,m;
int maxx=-1;
int maxy=-1;
int x,y;
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>board[i][j];
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(board[i][j]!='#'){
				if(maxx>=0){
					if(board[i][j]<=board[maxx][maxy]){
						continue;
					}
				}
				maxx=i;
				maxy=j;
			}		
		}
	}
	x=maxx;
	y=maxy;
	while(maxx>=0){
		c+=board[x][y];	
		if((board[x-1][y]=='#'||board[x-1][y]>=board[x][y])&&
			(board[x][y+1]=='#'||board[x][y+1]>=board[x][y])&&
			(board[x][y-1]=='#'||board[x][y-1]>=board[x][y])&&
			(board[x+1][y]=='#'||board[x+1][y]>=board[x][y])){
			cout<<c;
			return 0;	
		}
		maxx=max({board[x-1][y],board[x][y+1],board[x][y-1],board[x+1][y]});
		if(board[x-1][y]==maxx){
			x-=1;
		}
		if(board[x+1][y]==maxx){
			x+=1;
		}
		if(board[x][y+1]==maxx){
			y+=1;
		}
		if(board[x-1][y-1]==maxx){
			x-=1;
		}
	}
}
2024/8/24 08:36
加载中...