• 2-5-6264:走出迷宫


    描述

    当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 
    假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。

    输入第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
    接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。输出输出从起点到出口最少需要走的步数。样例输入

    3 3
    S#T
    .#.
    ...

    样例输出

    6
     1 #include<stdio.h>
     2 #include<string.h>
     3 int ni[4]={0,1,0,-1};
     4 int nj[4]={1,0,-1,0};
     5 int qu[10001][2],dep[10000];
     6 char a[101][101];
     7 int book[101][101];
     8 int m,n,i,j,k,si,sj,xi,xj,qi,qj,zi,zj,bu=0,ans;
     9 int main()
    10 {
    11     int h,t;
    12     scanf("%d%d",&m,&n);
    13     memset(book,0,sizeof(book));
    14     for(i=1;i<=m;i++)
    15         scanf("%s",a[i]);
    16     for(i=1;i<=m;i++)
    17         for(j=0;j<=n-1;j++)
    18         {
    19             if(a[i][j]=='S')    {qi=i;qj=j;book[i][j]=1;}
    20             if(a[i][j]=='T')    {zi=i;zj=j;}
    21         }
    22         h=0;t=0;ans=-1;
    23         memset(dep,0,sizeof(dep));
    24         memset(qu,0,sizeof(qu));
    25         qu[0][0]=qi;qu[0][1]=qj;
    26         while(h<=t)
    27         {
    28             xi=qu[h][0];
    29             xj=qu[h][1];
    30             if(xi==zi&&xj==zj)
    31             {
    32                 ans=dep[h];
    33                 break;
    34             }
    35             for(k=0;k<=3;k++)
    36             {
    37                 si=xi+ni[k];
    38                 sj=xj+nj[k];
    39                 if(si>=1&&si<=m&&sj>=0&&sj<=n-1)
    40                     if(a[si][sj]!='#'&&book[si][sj]!=1)
    41                     {
    42                         qu[++t][0]=si;
    43                         qu[t][1]=sj;
    44                         dep[t]=dep[h]+1;
    45                         book[si][sj]=1;
    46                     }
    47             }
    48             h++;
    49         }
    50         printf("%d
    ",ans);
    51     return 0;
    52 }
  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1421 搬寝室
    HDU 1176 免费馅饼
    七种排序算法的实现和总结
    算法纲要
    UVa401 回文词
    UVa 10361 Automatic Poetry
    UVa 537 Artificial Intelligence?
    UVa 409 Excuses, Excuses!
    UVa 10878 Decode the tape
  • 原文地址:https://www.cnblogs.com/qianxuejin/p/6011420.html
Copyright © 2020-2023  润新知