• BFS 巡逻机器人


     巡逻机器人

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83498#problem/F

    题目大意:

        机器人在一个矩形区域巡逻,是一网格(m行和n列)。从左上角(1,1)到右下角(m,n)。网络格

    中的一些格子是空地(用0表示),其他格子是障碍(用1表示)。机器人每次有4个方向走,但不能

    连续穿越k障碍,求最短长度。

    分析:

       用bfs进行搜索,不过当遇到障碍的时候记录下,当遇到的障碍超过k时,返回到上一步。

     1 #include<iostream>
     2 #include<queue>
     3 #include<cstring>
     4 using namespace std;
     5 int n,m,k,t;
     6 int map[25][25];
     7 int d[4][2]= {1,0,-1,0,0,-1,0,1};
     8 int c[25][25][25];
     9 struct A
    10 {
    11     int x,y;
    12     int count;
    13     int l;
    14     A(int x,int y,int count,int l):x(x),y(y),count(count),l(l) {}
    15 };
    16 int Do()
    17 {
    18     queue<A>q;
    19     A a(1,1,0,0);
    20     q.push(a);
    21     c[1][1][0]=1;
    22    while(!q.empty())
    23     {
    24         A now=q.front();
    25          q.pop();
    26         if(now.x==n&&now.y==m)
    27             return now.count;
    28         for(int i=0; i<4; i++)
    29         {
    30             int x=d[i][0]+now.x;
    31             int y=d[i][1]+now.y;
    32             int l=now.l;
    33             if(map[x][y]==1)
    34                 l++;
    35                 else
    36                 l=0;
    37             if(l<=k&&c[x][y][l]!=1&&x>=1&&y>=1&&x<=n&&y<=m)
    38             {
    39                 c[x][y][l]=1;
    40                 q.push(A(x,y,now.count+1,l));
    41             }
    42         }
    43     }
    44     return -1;
    45 }
    46 int main()
    47 {
    48     cin>>t;
    49     while(t--)
    50     {    
    51           memset(c,0,sizeof(c));
    52         cin>>n>>m>>k;
    53         for(int i=1; i<=n; i++)
    54             for(int j=1; j<=m; j++)
    55                 cin>>map[i][j];
    56         cout<<Do()<<endl;
    57     }
    58     return 0;
    59 }
     
  • 相关阅读:
    NFS服务
    rsync
    jquery animate
    一个简单的widget
    EXTJS学习(一)
    jquery+linq制作博客(二)
    EXTJS学习(二)Message
    Jquery ui widget中的_create(),_init(),destroy()
    Jquery ui widget开发
    Json.net简单用法
  • 原文地址:https://www.cnblogs.com/fenhong/p/4678552.html
Copyright © 2020-2023  润新知