• poj3984 广度搜索BFS


      迷宫问题

    Description

    定义一个二维数组: 

    int maze[5][5] = {
    0, 1, 0, 0, 0,
    0, 1, 0, 1, 0,
    0, 0, 0, 0, 0,
    0, 1, 1, 1, 0,
    0, 0, 0, 1, 0,
    };

    它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

    Input

    一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

    Output

    左上角到右下角的最短路径,格式如样例所示。

    Sample Input

    0 1 0 0 0
    0 1 0 1 0
    0 0 0 0 0
    0 1 1 1 0
    0 0 0 1 0

    Sample Output

    (0, 0)
    (1, 0)
    (2, 0)
    (2, 1)
    (2, 2)
    (2, 3)
    (2, 4)
    (3, 4)
    (4, 4)

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 int map[5][5],len[30],front,sear,x,y,i,j;
     5 struct que
     6 {
     7    int x,y;
     8    int n;
     9 
    10 }que[30];
    11 int xx[]={1,0,-1,0};
    12 int yy[]={0,1,0,-1};
    13 int bfs()
    14 {
    15     front=0;sear=0;len[0]=0;que[0].x=0;que[0].y=0;que[front].n=-1;
    16     while(front<=sear)
    17     {
    18         for(i=0;i<4;i++)
    19         {
    20             x=que[front].x+xx[i];
    21             y=que[front].y+yy[i];
    22             if(x>=0&&y>=0&&x<5&&y<5&&map[x][y]==0)
    23             {
    24                 map[x][y]=1;
    25                 que[++sear].x=x;
    26                 que[sear].y=y;
    27                 que[sear].n=front;
    28                 len[sear]=len[front]+1;
    29                 if(x==4&&y==4)return 1;
    30             }
    31         }
    32         front++;
    33     }
    34 }
    35 
    36 void myprintf(int x)
    37 {
    38     if(x==-1)
    39     {
    40        return;
    41     }
    42     myprintf(que[x].n);
    43     printf("(%d, %d)
    ",que[x].x,que[x].y);
    44 }
    45 
    46 int main()
    47 {
    48 
    49     for(i=0;i<5;i++)
    50     {
    51         for(j=0;j<5;j++)
    52         scanf("%d",&map[i][j]);
    53         getchar();
    54     }
    55     bfs();
    56     myprintf(sear);
    57     return 0;
    58 }




  • 相关阅读:
    jQuery 折叠,自动完成,小提示,树,验证插件(bassistance.de)
    多样化的连结提示效果(Tips)
    Ext开源 Extjs2.0 人力资源管理(ASP.NET)
    JavaScript面向对象编程
    访问Ext.data.store的数据
    Ext核心代码分析之Function.createDelegate
    支持firefox的省略符
    Ext 2.0下Jquery的整合使用示例
    多样化的垂直菜单(OUTLOOK菜单)
    使用 jQuery 简化 Ajax 开发
  • 原文地址:https://www.cnblogs.com/carcar/p/8227707.html
Copyright © 2020-2023  润新知