• 电子老鼠闯迷宫.cpp


    <span style="color:#6600cc;">// laos.cpp : 定义控制台应用程序的入口点。
    
    /*描述
    有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。
    
    
    
    输入
    本题包含一个测例。在测例的第一行有四个由空格分隔的整数,分别表示起点的坐标S(x.y)和终点的坐标T(x,y)。从第二行开始的12行中,每行有12个字符,描述迷宫的情况,其中'X'表示建筑物,'.'表示路.
    
    输出
    输出一个整数,即电子老鼠走出迷宫至少需要的步数。
    
    输入样例
    2 9 11 8
    XXXXXXXXXXXX
    X......X.XXX
    X.X.XX.....X
    X.X.XX.XXX.X
    X.X.....X..X
    X.XXXXXXXXXX
    X...X.X....X
    X.XXX...XXXX
    X.....X....X
    XXX.XXXX.X.X
    XXXXXXX..XXX
    XXXXXXXXXXXX
    
    
    输出样例
    28
    
    BY Yang Bob
    最短路思想解决迷宫问题*/
    //#include "stdafx.h"
    #include<stdio.h>
    #include<math.h>
    #define max 10000
    #define size 12
    int a[13][13]={10000},d[1000][1000];
    int main(){
    	int i,j,k,startx,starty,stopx,stopy;
    	char ch;
    	scanf("%d %d",&startx,&starty);//输入起点
    	scanf("%d %d",&stopx,&stopy);//终点
    	getchar();//取回车符
    	for(i=1;i<=size;i++){
    	for(j=1;j<=size;j++){
    	ch=getchar();
    	if(ch=='X'){//X表示不通
    	a[i][j]=max;
    	}else if(ch=='.'){//.表示连通
    	a[i][j]=1;
    	}else {printf("ERROR!!!!");}//输入错误
    	}
    	getchar();//取回车符
    	}
    	for(i=1;i<=size*size;i++)//12*12点阵转化为144*144距离矩阵
        for(j=1;j<=size*size;j++){
        if(i==j){
    		d[i][j]=0;
    	}else if(fabs((i+11)/12-(j+11)/12)+fabs(i-12*((i-1)/12)-j+12*((j-1)/12))==1&&a[(i+11)/12][i-12*((i-1)/12)]==1&&a[(j+11)/12][j-12*((j-1)/12)])
        d[i][j]=1;//连通置1
        else{d[i][j]=max;}//不通置max
    	}
    	for(k=1;k<=size*size;k++)// Floyd
    	for(i=1;i<=size*size;i++)
    	for(j=1;j<=size*size;j++){
    	if(d[i][k]+d[k][j]<d[i][j])
    	d[i][j]=d[i][k]+d[k][j];
    	}
    	printf("%d
    ",d[(startx-1)*12+starty][(stopx-1)*12+stopy]);
    	return 0;
    }
    
    
    </span>


  • 相关阅读:
    [vue Debugger] sourcemap
    [vuex]持久化存储
    [vuex]字典值封装到vuex缓存
    [vue]常用指令集合
    VSCode插件集合
    [element-ui] 表格点击出现编辑效果实现
    [pdf] 插件实现pdf上传预览、打印
    [html] 特殊字符
    [element-ui] 穿梭框对象重复不添加方案
    Redis持久化
  • 原文地址:https://www.cnblogs.com/codeyuan/p/4254553.html
Copyright © 2020-2023  润新知