• 矛盾激化


    Description

    圆星与盒星的贸易日渐繁荣,渐渐地盒星的人们发现生意越做越穷,于是他们找上了圆星的矛盾。但由于盒星人的智力普遍较低,盒星人计划向聪明的圆星人一起玩游戏,他们认为如果圆星人思考并取胜了那么就是一心一意做生意,反之则证明在坑他们。

    高智商的圆星人并不想花时间和盒星人玩这种游戏,于是他交给了你。

    游戏内容是迷宫,需要计算从迷宫中最“糟糕”的那一个点走出迷宫所需的步数(即使从这一点以最优的方式走向最靠近的出口,它仍然需要最多的步数)。

    当然了,圆星人只能水平或垂直地在 X 或 Y 轴上移动,他们从来不走对角线。每移动到一个新的方格算作一步(包括移出迷宫的那一步)。

    即求出从所有的点到任意一个出口的距离中所有最短路径的最大值

    注意,本题是提交答案题,将最后一个样例的对应答案直接输出即可

    Input

    第一行输入两个整数a,ba,b表示长宽

    接下来(2 imes b+1)行,每行(2 imes a+1)个字符

    描述一个迷宫

    Output

    输出一个整数,表示走出迷宫的所有最短路径中的最大值

    Sample Input 1

    6 3
    + +-+-+-+-+-+
    |           |
    +-+ +-+ +-+-+
    |           |
    +-+-+-+-+-+ +
    |           |
    + +-+-+-+-+-+
    

    Sample Output 1

    7
    

    Sample Input 5

    38 100
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         | |             |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
    |               |                         |                                 |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |               |   |         |   |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |             |             |       |           |   |   | |   | |   |   | | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |         |               |         | |         |       | | |   |   | |   | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    |                                     |             |       |               |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |         |               |         | |         |       | | |   |   | |   | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |             |             |       |           |   |   | |   | |   |   | | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                         | |             |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
    |               |                         |                                 |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |               |   |         |   |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |             |             |       |           |   |   | |   | |   |   | | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |         |               |         | |         |       | | |   |   | |   | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    |                                     |             |       |               |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |         |               |         | |         |       | | |   |   | |   | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |             |             |       |           |   |   | |   | |   |   | | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                         | |             |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+ +             +
    |               |                     |   |                                 |
    +-+-+-+-+       +-+-+             +-+-+   +-+-+-+-+-+-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |               |   |         |   |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |             |             |       |           |   |   | |   | |   |   | | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |         |               |           |                 | | |   |   | |   | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    +-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    |                                     |             |       |               |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |         |               |         | |         |       | | |   |   | |   | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |             |             |       |           |   |   | |   | |   |   | | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         | |             |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
    |               |                         |                                 |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |               |   |         |   |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                                                                           |
    +         +                         + +         +   +   + + + + +   + + + + +
    |         |   |           | |       | |         |       | | |   |   | |   | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    |                                     |             |       |               |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |         |               |         | |         |       | | |   |   | |   | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |             |             |       |           |   |   | |   | |   |   | | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+        -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+  -+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         | |             |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       + +             +
    |               |                         |                                 |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |               |   |         |   |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |             |             |       |           |   |   | |   | |   |   | | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |         |               |         | |         |       | | |   |   | |   | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-   -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | |                                                                         |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                         |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    |                                     |             |       |               |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |         |               |         | |         |       | | |   |   | |   | |
    +         +   +           + +       + +         +   +   + + + + +   + + + + +
    |             |             |       |           |   |   | |   | |   |   | | |
    +-+-+-+-+-+   +-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+   +-+-+ +-+ +-+   +-+ +-+ +
    |                 |                 |     |           |       |     |       |
    +-+-+-+-+       +-+-+             +-+-+   +-+       +-+-+-+ +-+-+-+-+   +-+-+
    |                                     |             |       |               |
    + +-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+       +-+             +
    | |                                                         |               |
    + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+
    | |                                                                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    

    Sample Output 5

    267
    

    题解

    #include<iostream>
    #include<queue>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    #define inf 0x3f3f3f3f
    char map[500][500];//存储地图 
    int m,n;
    //存储起始点x、y坐标 
    int sx[3];
    int sy[3]; 
    int cnt;
    int answer;
    bool book[500][500];//标记数组 
    int dis[500][500];//维护最短距离的最小值 
    struct node{
    	int x;
    	int y;
    	int sum;
    };
    node temp,now;
    queue<node> que;
    int dir1[4][2]={1,0,0,1,-1,0,0,-1};
    int dir2[4][2]={2,0,0,2,-2,0,0,-2};
    void bfs(int num){
    	//每次广搜前初始化 
    	memset(book,0,sizeof(book));
    	while(!que.empty()){
    		que.pop();
    	}
    	temp.x=sx[num];
    	temp.y=sy[num];
    	temp.sum=0;
    	que.push(temp);//将起点加入队列 
    	book[sx[num]][sy[num]]=1;//标记起点 
    	while(!que.empty()){
    		now=que.front();//取出节点 
    		que.pop();
    		int x=now.x;
    		int y=now.y;
    		int s=now.sum;
    		dis[x][y]=min(dis[x][y],s);//取最小值 
    		//向四个方向遍历 
    		for(int i=0;i<4;i++){
    			//走两格 
    			int xx=dir2[i][0]+x;
    			int yy=dir2[i][1]+y;
    			//走一格 
    			int zx=dir1[i][0]+x;
    			int zy=dir1[i][1]+y;
    			//如果是需要走两格 
    			if(!book[xx][yy]&&map[xx][yy]==' '&&xx>=1&&xx<=2*n+1&&yy>=1&&yy<=2*m+1&&map[zx][zy]==' '&&(x!=sx[num]||y!=sy[num])){
    				book[xx][yy]=1;
    				temp.x=xx;
    				temp.y=yy;
    				temp.sum=s+1;
    				que.push(temp);
    			}
    			//如果从起点开始走的话,需要走一格 
    			else if(!book[zx][zy]&&map[zx][zy]==' '&&zx>=1&&zx<=2*n+1&&yy>=1&&yy<=2*m+1&&x==sx[num]&&y==sy[num]){
    				book[zx][zy]=1;
    				temp.x=zx;
    				temp.y=zy;
    				temp.sum=s+1;
    				que.push(temp);
    			}
    		}
    	}
    }
    int main(){
    	scanf("%d%d",&m,&n);
    	getchar();
    	//初始化距离为无穷大 
    	for(int i=1;i<=2*n+1;i++){
    		for(int j=1;j<=2*m+1;j++){
    			dis[i][j]=inf;
    		}
    	}
    	for(int i=1;i<=2*n+1;i++){
    		for(int j=1;j<=2*m+1;j++){
    			scanf("%c",&map[i][j]);
    			//从地图的四个边搜索起点 
    			if(i==1||j==1||i==2*n+1||j==2*m+1){
    				if(map[i][j]==' '){
    					sx[++cnt]=i;
    					sy[cnt]=j;
    				}
    			}
    		}
    		getchar();
    	}
    	//从两个起点分别遍历一次 
    	bfs(1);
    	bfs(2);
    	//从所有的距离中找到最大值 
    	for(int i=1;i<=2*n+1;i++){
    		for(int j=1;j<=2*m+1;j++){
    			if(dis[i][j]!=inf){
    				answer=max(dis[i][j],answer);
    			}
    		}
    	}
    	printf("%d",answer);
    	return 0;
    }
    

    这道题核心就是宽搜,有点不同的就是这道题的输入格式很特殊,不是一个字符代表一个格子,而是四个+号围成一个格子,正常在迷宫中走需要走两格,从起点向迷宫中走得走一格,所以我们要分出走一格和走两格的情况

    注意我们应该在将格子入队时就标记这个格子,而不是到这个格子时才标记。

  • 相关阅读:
    C#类型转换
    C#运算符
    SQL视图与触发器
    存储过程
    SQL 变量
    SQL 经典练习题
    字符串函数,数据类型转换,链接查询,纵向查询
    常用的 SQL 函数
    习题整理(1)
    子查询的部分内容
  • 原文地址:https://www.cnblogs.com/fate-/p/13408680.html
Copyright © 2020-2023  润新知