XXrl找bug hhh

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

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

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

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

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

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<queue>
 7 using namespace std;
 8 int fa[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
 9 char mp[505][505];
10 int ma[505][505],n,m,r,s;
11 int ans;
12 struct node
13 {
14    int x,y,step;
15 }v[100000];
16 bool pan(int x,int y)
17 {
18   if(x<0||y<0||x>=n||y>=m) return false;
19   return true;
20 }
21 void bfs()
22 {
23     v[r].x=0;
24     v[r].y=0;
25     v[r].step=0;
26     ma[0][0]=1;
27     r++;s=0;
28     int d=0;
29     while(s<r)
30     {
31      for(int i=0;i<4;i++)
32      {
33         int x=v[s].x+fa[i][0];
34         int y=v[s].y+fa[i][1];
35         if(pan(x,y)&&ma[x][y]==0)
36         {
37         if(x==n-1&&y==m-1)
38         {
39          ans=v[s].step+1;
40          ma[x][y]=1;
41          d=1;
42          break;
43         }
44         else if(mp[x][y]==‘.‘)
45            {
46             v[r].x=x;
47             v[r].y=y;
48             v[r].step=v[s].step+1;
49             r++;
50             ma[x][y]=1;    //各种路里mark不会相冲突吗
51            }
52         }
53
54      }
55      if(d) break;
56      s++;
57     }
58 }
59 int main()
60 {
61     int t;
62     scanf("%d",&t);
63     while(t--)
64     {
65         scanf("%d%d",&n,&m);
66         for(int i=0;i<n;i++)
67         scanf("%s",mp[i]);
68         memset(ma,0,sizeof(ma));
69         r=0;
70         ans=0;
71         bfs();
72         printf("%d\n",ans);
73     }
74     return 0;
75 }

RE,数组表队列

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef pair<int,int>node; //pair!! first
 4 int fa[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
 5 char mp[505][505];
 6 int ma[505][505],n,m;
 7 void bfs()
 8 {
 9     queue<node>q;
10     node now={1,1};
11     ma[1][1]=1;
12     while(!q.empty()) q.pop(); //clear
13     q.push(now);
14     while(!q.empty())
15     {
16         now=q.front();
17         q.pop();
18         for(int i=0;i<4;i++)
19         {
20             int x=now.first+fa[i][0]; //pair 这里可以define
21             int y=now.second+fa[i][1];
22             if(ma[x][y]!=0||!x||!y||x==n+1||y==m+1||mp[x][y]==‘*‘)//这了的!x
23             continue;
24             ma[x][y]=ma[now.first][now.second]+1; //太**了,用标记顺便当step,充分利用
25             if(x==n&&y==m)
26             {
27                 printf("%d\n",ma[x][y]);
28                 return;
29             }
30             q.push({x,y});
31         }
32
33     }
34     puts("-1"); //把不可能的结果放在这里,注意位置
35 }
36 int main()
37 {
38     int t;
39     scanf("%d",&t);
40     while(t--)
41     {
42         scanf("%d%d",&n,&m);
43         for(int i=1;i<=n;i++)
44         scanf("%s",mp[i]+1); //指针,不从第一个位置开始读
45         memset(ma,0,sizeof(ma));
46         bfs();
47     }
48     return 0;
49 }

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

 1 #pragma GCC diagnostic error "-std=c++11"
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 //typedef pair<int,int>node; //pair!! first
 5 int fa[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
 6 char mp[505][505];
 7 int ma[505][505],n,m;
 8 struct node{
 9 int x,y;
10 };
11 void bfs()
12 {
13     queue<node>q;
14     node now;
15     now.x=1;
16     now.y=1;
17     ma[1][1]=1;
18     while(!q.empty()) q.pop(); //clear
19     q.push(now);
20     while(!q.empty())
21     {
22         now=q.front();
23         q.pop();
24         for(int i=0;i<4;i++)
25         {
26             int x=now.x+fa[i][0];
27             int y=now.y+fa[i][1];
28             if(ma[x][y]!=0||!x||!y||x==n+1||y==m+1||mp[x][y]==‘*‘)//这了的!x
29             continue;
30             ma[x][y]=ma[now.x][now.y]+1; //太**了,用标记顺便当step,充分利用
31             if(x==n&&y==m)
32             {
33                 printf("%d\n",ma[x][y]-1);
34                 return;
35             }
36             node no;
37             no.x=x;
38             no.y=y;
39             q.push(no);
40         }
41
42     }
43     puts("-1"); //把不可能的结果放在这里,注意位置
44 }
45 int main()
46 {
47     int t;
48     scanf("%d",&t);
49     while(t--)
50     {
51         scanf("%d%d",&n,&m);
52         for(int i=1;i<=n;i++)
53         scanf("%s",mp[i]+1); //指针,不从第一个位置开始读
54         memset(ma,0,sizeof(ma));
55         bfs();
56     }
57     return 0;
58 }

pair不能用后 改成struct

原文地址:https://www.cnblogs.com/XXrll/p/10121580.html

时间: 2024-10-29 03:18:57

XXrl找bug hhh的相关文章

第二次作业:找Bug

引子 我真的想了一个小时,上哪里去找bug.我昨天还留意到一个bug,今天就不见了.灵光不断,我想起来了.我就要找大公司的产品的bug... 第一部分 调研, 评测 体验. <腾讯桌球>是腾讯首款重磅推出的桌球对战游戏,使用自研物理引擎高度还原真实桌球操作,界面精美,球杆酷炫,操作流畅.集多种玩法,给玩家更多体验.  --官方游戏介绍 好久没玩,操作几把. 实力依旧,我在等待BUG的出现. 按照<构建之法>13.1节描述的 bug 定义, 找出几个功能性的比较严重的 bug. bu

【软件测试】软件测试是找bug,不是找茬

前两天和一个新认识的朋友聊天 "你是码农吗?" 我那个气啊,我这个形象像吗?像吗?真想抽他丫的 "不是,我是做软件测试的,代码用的没有那么多,所以称不上" "哦!那你就是专门挑毛病,找茬的呗?" 当时我就认定了这个朋友拜拜了您内 "我是做测试的,找的是缺陷,不是找茬,谢谢您老了,先忙,再见" 回家了之后我就想分享一下: 第一: 测试是找bug,不是找茬.以前在外包做测试,面对的之间人是PM,面对所谓的客户是开发软件的人,而且因

找bug的过程

关于昨天程序出差我找bug的过程记录 昨天才程序 https://www.cnblogs.com/pythonywy/p/11006273.html ├── xxxx │ ├── src.py │ └── fil_mode.py │ └── data_time.py │ └── loading.py │ └── data_time.py │ └── logger.py src.py与打印日志相关片段 if __name__ == '__main__': logger_start('程序主界面')

程序员新人怎样在复杂代码中找 bug?

分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治.比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好

程序员怎样在复杂代码中找 bug?(简单)

分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治.比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好

POJ 2096 找bug 期望dp

题目大意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcomponent,问他找到所有的bugs和subcomponents的期望次数. 这道题目要用期望dp来进行统计 假设已经找到i个bug和j个subcomponents,这个状态记为dp[i][j],那么下次查找会出现4种状态:dp[i][j],dp[i+1][j],dp[i][j+1],dp[i+1][j+

一码学程 10284 排队找bug 题解 单调队列 或者 线段树RMQ

注:只是看到题目,未评测,所以不确定代码正确性,但是算法思路没有问题 描述 同学们的bug还真是多啊,orz... 春节期间大家存下的bug都来找肖老师解决了. 每个人都有bug,但是肖老师却只有一个啊.怎么办? 所以肖老师让大家按先来后到的顺序排队,一个一个的给大家解决. 这不一大早起来,肖老师就等着同学们过来解决bug了.不过肖老师偶尔想知道当前队伍中bug数量最少的是多少bug. sos xbug操作表示有一个同学有x个bug,并且过来排队等待肖老师解决. ok 操作表示肖老师已经解决了排

C#程序双击运行之后,界面不显示,但是在任务管理器有进程(一个winform找bug之旅)

最近客户端又出了奇葩事情:http://q.cnblogs.com/q/43038/ 如这篇博问一样.我的一个客户的电脑上程序打开了,进程也有了,就是界面窗体出不来!!! 我是win7是开发机,三四台测试虚拟机,都是xp的.都可以完美运行.但是客户那么就是出现了那么多问题,谁叫着软件用户多呢,有一万多的用户.然后就会有一万多的奇葩电脑,50%的xp,50%的win7.win7自当是没有事情,问题基本都是xp引起的.真的是xp引起的血案.一开始的常规思路是客户机的运行库是否按照正确,结果是2.0的

找BUG第二弹——出具发票日期和时间创建日期不一致问题解决方案

现在负责的项目,有个已发货退货业务,要求是开票的时间节点是退货交货退货单创建之后,这就会造成这么一个问题,就是创建退货SO和退货开票的时间节点会有差别.如下图: 所以客户想把这两个日期修改一致,我给出的方案有以下两种: 从配置上进行更改: 查看该开票类型ZRE1,它是参照SO进行的开票,并找其对应的复制控制:地址如下: Spro  --> SAP参考IMG  --> 销售和分销 --> 开票 --> 开票凭证 --> 维护开票凭证的复制规则 --> 复制控制: 销售凭证