http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4434

没有用队列,疯狂找不到bug,后来发现很简单的判断时==n和m了,本来心花怒放,测试数据也过了。然而,呜呼,许久不见的re;

好的,re,re,重新,重新!!

然而,不死心的在开更大一点,发现是WA。

那什么时候bfs用数组就行了呢。。

唔,下面那个标注里 mark不会冲突,如果到了这个点上,那他往哪里走的可能性都是一样的 不改变就重复了

 #include<cstdio>
 #include<cmath>
 #include<cstring>
 #include<iostream>
 #include<algorithm>
 #include<queue>
 using namespace std;
 ][]={{-,},{,-},{,},{,}};
 ][];
 ][],n,m,r,s;
 int ans;
 struct node
 {
    int x,y,step;
 }v[];
 bool pan(int x,int y)
 {
   ||y<||x>=n||y>=m) return false;
   return true;
 }
 void bfs()
 {
     v[r].x=;
     v[r].y=;
     v[r].step=;
     ma[][]=;
     r++;s=;
     ;
     while(s<r)
     {
      ;i<;i++)
      {
         ];
         ];
         )
         {
         &&y==m-)
         {
          ans=v[s].step+;
          ma[x][y]=;
          d=;
          break;
         }
         else if(mp[x][y]=='.')
            {
             v[r].x=x;
             v[r].y=y;
             v[r].step=v[s].step+;
             r++;
             ma[x][y]=;    //各种路里mark不会相冲突吗
            }
         }

      }
      if(d) break;
      s++;
     }
 }
 int main()
 {
     int t;
     scanf("%d",&t);
     while(t--)
     {
         scanf("%d%d",&n,&m);
         ;i<n;i++)
         scanf("%s",mp[i]);
         memset(ma,,sizeof(ma));
         r=;
         ans=;
         bfs();
         printf("%d\n",ans);
     }
     ;
 }

RE,数组表队列

 #include<bits/stdc++.h>
 using namespace std;
 typedef pair<int,int>node; //pair!! first
 ][]={{-,},{,-},{,},{,}};
 ][];
 ][],n,m;
 void bfs()
 {
     queue<node>q;
     node now={,};
     ma[][]=;
     while(!q.empty()) q.pop(); //clear
     q.push(now);
     while(!q.empty())
     {
         now=q.front();
         q.pop();
         ;i<;i++)
         {
             ]; //pair 这里可以define
             ];
             ||!x||!y||x==n+||y==m+||mp[x][y]=='*')//这了的!x
             continue;
             ma[x][y]=ma[now.first][now.second]+; //太**了,用标记顺便当step,充分利用
             if(x==n&&y==m)
             {
                 printf("%d\n",ma[x][y]);
                 return;
             }
             q.push({x,y});
         }

     }
     puts("-1"); //把不可能的结果放在这里,注意位置
 }
 int main()
 {
     int t;
     scanf("%d",&t);
     while(t--)
     {
         scanf("%d%d",&n,&m);
         ;i<=n;i++)
         scanf(); //指针,不从第一个位置开始读
         memset(ma,,sizeof(ma));
         bfs();
     }
     ;
 }

学长写,虽然好像不兼容过不了,但是太厉害了!!

 #pragma GCC diagnostic error "-std=c++11"
 #include<bits/stdc++.h>
 using namespace std;
 //typedef pair<int,int>node; //pair!! first
 ][]={{-,},{,-},{,},{,}};
 ][];
 ][],n,m;
 struct node{
 int x,y;
 };
 void bfs()
 {
     queue<node>q;
     node now;
     now.x=;
     now.y=;
     ma[][]=;
     while(!q.empty()) q.pop(); //clear
     q.push(now);
     while(!q.empty())
     {
         now=q.front();
         q.pop();
         ;i<;i++)
         {
             ];
             ];
             ||!x||!y||x==n+||y==m+||mp[x][y]=='*')//这了的!x
             continue;
             ma[x][y]=ma[now.x][now.y]+; //太**了,用标记顺便当step,充分利用
             if(x==n&&y==m)
             {
                 printf();
                 return;
             }
             node no;
             no.x=x;
             no.y=y;
             q.push(no);
         }

     }
     puts("-1"); //把不可能的结果放在这里,注意位置
 }
 int main()
 {
     int t;
     scanf("%d",&t);
     while(t--)
     {
         scanf("%d%d",&n,&m);
         ;i<=n;i++)
         scanf(); //指针,不从第一个位置开始读
         memset(ma,,sizeof(ma));
         bfs();
     }
     ;
 }

pair不能用后 改成struct

找bug hhh的更多相关文章

  1. 海王星给你好看!FineUI v4.0公测版发布暨《你找BUG我送书》活动开始(活动已结束!)

    <FineUI v4.0 你找BUG我送书>活动已结束,恭喜如下三位网友获得由 FineUI 作者亲自翻译的图书<jQuery实战 第二版>! 奋斗~ 吉吉﹑ purplebo ...

  2. 第二次作业:找Bug

    引子 我真的想了一个小时,上哪里去找bug.我昨天还留意到一个bug,今天就不见了.灵光不断,我想起来了.我就要找大公司的产品的bug... 第一部分 调研, 评测 体验. <腾讯桌球>是 ...

  3. 附加题程序找bug

    private: void Resize(int sz){ ){ return; } if(maxSize != sz){ T *arr = new T[sz]; if(arr == NULL){ r ...

  4. 在无法单步调试的情况下找Bug的技巧

    比如说你有一个大的模块A,其组成部分有B,C,D这3个小的模块,现在A出了一个BUG,因为某种原因的限制你无法单步调试.怎么较快地定位BUG发生的根源? 这里记录一下刚才我在找BUG的时候采用的思路, ...

  5. 找BUG

    找一找BUG 一段代码,实现一个pop,push,和getmin都是O(1)的方法. 最初源代码 伙伴代码如下,代码的地址可以通过这个访问: Ubuntu Pastebin https://paste ...

  6. 判断空间上三个点是否共线问题【找bug篇】

    判断空间上三个点是否在同一直线上[找bug篇] 作者:Vashon 时间:20150601   发布时间:20150718 一.拿到问题,首先分析并理清思路. 判断三点是否在同一条直线上需满足以下几点 ...

  7. 找bug的过程

    关于昨天程序出差我找bug的过程记录 昨天才程序 https://www.cnblogs.com/pythonywy/p/11006273.html ├── xxxx │ ├── src.py │ └ ...

  8. 如何正确的找BUG

    什么是BUG 漏洞是在硬件.软件.协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统.具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在S ...

  9. 一起找bug

    帮同学找的一个bug,错误代码如下: package dai_test; public class Test1 { public static void main(String[] args) { / ...

随机推荐

  1. Where is NuGet in VS2017 Community?

    问题:在VS2017中找不到NuGet 回答:https://stackoverflow.com/questions/43702484/where-is-nuget-in-vs2017-communi ...

  2. usrp-B210

    sudo add-apt-repository ppa:ettusresearch/uhd sudo apt-get update sudo apt-get install libuhd-dev li ...

  3. angular基础巩固

    angular中的模块化 //定义模块 []为依赖的模块 moduleName可以使用[]模块中定义的controller filter .. var app=angular.module('modu ...

  4. Layer-level的快速算法

    十岁的小男孩 本文为终端移植的一个小章节. Sparse Block Net 本节为优化加速的第二章节,主要介绍Sparse-block net.上章节为OP算子层的加速,本节为层级间的加速,主要针对 ...

  5. MySql在windows上的安装

    知乎安装教程 csdn安装教程 一.官网下载 ZIP Archive 内的软件包,mysql-xxx-win64.zip. 二.新建 MySQL 文件夹,解压缩下载包,进入文件夹(mysql-8.0. ...

  6. java接口实现

    1.接口中的方法一定是public abstract方法所以类要继承实现接口的时候,一定要去掉abstract修饰符,而且还要标明方法的访问权限一定是public 声明接口不适用public就是友好的 ...

  7. AI-DRF权限、频率

    权限 权限逻辑 权限逻辑 权限组件可以设置在三个地方:写在每个类下边表示,访问这个类的数据时,没有权限就不能访问:写在全局,表示访问每个字段的数据都需要权限:还有默认已经也写好了. 写在每个类中:写一 ...

  8. Python 开发的 IDE 和代码编辑器,你选择的哪一个?

    为了方便,我会分两个大类去说明,一类是适用于软件开发的比较通用的编辑器或 IDE ,我们可以通过插件等形式支持 Python 的开发,另一个是专注于 Python 开发的编辑器或 IDE . 不过在此 ...

  9. Moco使用简单指导

    下载地址 需要java运行环境支持.下载jar包:moco-runner-<version>-standalone.jar 配置文件 下面是参考: 配置 Moco的配置文件格式使用的是js ...

  10. Sql Server并发和事务

    锁的作用范围通常在事务中,事务是建立在并发模式下. 从SQL Server 2005开始,加入了一种新的并发模式-----乐观并发.不管使用哪种并发模式,如果多个会话同时修改相同的数据,都会产生资源争 ...