zoukankan      html  css  js  c++  java
  • 6-5 巡逻机器人 uva1600

    一开始按照标准bfs来写  标记为二维数组

    后来按照三维数组写过了    ps大部分bfs都不会是二维数组搞定!!!

    其中有一个bug弄了半个小时。。。

    一开始我是先判断!vis【x】【y】【v.c】 再判断方块是否为1  是的话v.c++;否的话归零  

    但是 这并不科学   到另外一个方块的时候    如果数组下标内容和结构体有关的话  应该先改变状态再判断   就如同肯定是先在u的基础上改变dx dy  再判断v.x v.y  一个道理  不然会超时!因为头不对尾

    #include<bits/stdc++.h>
    using namespace std;
    
    int m1[25][25];int n,m,chance;
    bool vis[25][25][25];
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    struct  node
    {
        int x,y,d,c;
        node(int x=0,int y=0,int d=0,int c=0):x(x),y(y),d(d),c(c){}
    };
    
    bool inmap(int x,int y)
    {
        if(x>=1&&x<=n&&y>=1&&y<=m)return true;
        return false;
    
    }
    
    void bfs()
    {   memset(vis,false,sizeof(vis));
        node u(1,1,0,0);
        queue<node>q;
        q.push(u);
        vis[1][1][0]=true;
        while(!q.empty())
        {
           u=q.front();q.pop();
    
           if(u.x==n&&u.y==m){printf("%d
    ",u.d);return;}
           for(int i=0;i<4;i++)
           {
               node v(u.x+dx[i],u.y+dy[i],u.d+1,u.c);
    
    
               if(m1[v.x][v.y])
                v.c++;
               else v.c=0;
               if(v.c<=chance&&!vis[v.x][v.y][v.c]&&inmap(v.x,v.y))
               {
                   vis[v.x][v.y][v.c]=true;
    
                   q.push(v);
    
               }
    
           }
        }
        printf("-1
    ");
        return ;
    
    }
    
    int main()
    {
        int cas;cin>>cas;
        while(cas--)
        {
            scanf("%d %d %d",&n,&m,&chance);
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++)
                  scanf("%d",&m1[i][j]);
    
             bfs();
    
        }
    
    }
    View Code
  • 相关阅读:
    点击文本变成输入框
    html代码片段
    node 开启Gzip压缩
    npm 安装与卸载
    console.dir()-----js中console.log()和console.dir()的区别
    javaScript学习笔记之-------this
    javaScript学习笔记之-------闭包
    从零搭建vue项目---VUE从无到有
    require.js扫盲版
    cross-env 解决跨平台设置的NODE_ENV的问题
  • 原文地址:https://www.cnblogs.com/bxd123/p/10317740.html
Copyright © 2011-2022 走看看