1 条题解

  • 0
    @ 2023-6-11 12:24:19

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    //a数组:代表迷宫
    //b数组:描述路径,默认0,走一步+1
    int n,m;
    char a[110][110];
    int b[110][110];
    
    int main() {
    	cin>>n>>m;
    	for(int i = 0;i < n;i++){
    		for(int j = 0;j < m;j++){
    			cin>>a[i][j]; 
    			//标记起始点
    			if(a[i][j] == 'L') b[i][j] = 1; 
    		}
    	}
    	
    	string s = "LQBS";//行走顺序 
    	int c = 1;
    	//从一点出发,在上下左右寻找目标点,找到就继续
    	//找不到结束,死循环也结束 
    	while(true){
    		int flag = 0;//标记是否找到
    		for(int i = 0;i < n;i++){
    			for(int j = 0;j < m;j++){
    				//从起点位置出发 
    				if(b[i][j] == c){
    					//四方向找一个目标 
    					if(a[i][j-1]==s[c%4]){
    						b[i][j-1] = c + 1;
    						flag++;
    					}
    					if(a[i][j+1]==s[c%4]){
    						b[i][j+1] = c + 1;
    						flag++;
    					}
    					if(a[i-1][j]==s[c%4]){
    						b[i-1][j] = c + 1;
    						flag++;
    					}
    					if(a[i+1][j]==s[c%4]){
    						b[i+1][j] = c + 1;
    						flag++;
    					}
    				}
    			}
    		} 
    		
    		if(flag == 0) break;//上下左右都无法走
    		if(c > n * m) break;//无限循环 
    		c++; 
    	}
    	
    	if(c > n * m) cout<<-1;
    	else cout<<c / 4; 
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    2770
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者