代码参考网址:http://blog.csdn.net/slience_perseverance/article/details/6706354

试题分析:

本题是研究red and black的一个标题,实际上可以通过深度优先搜索的方式进行查找。前后左右的方格只要不是红色的就可以进行计数那么最后可以到达的个数会有多少呢?本人菜鸟一枚,确实解题有很大的困难,所以在参考别人的AC之后有很大的感触,这里先将代码粘贴出来后分析吧。

//关于BFS问题解答
//参考网址
//http://blog.csdn.net/slience_perseverance/article/details/6706354
//习题zoj2165
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

struct node
{
int x,y;
}q[400+10];
struct node P,N;
//直接自己定义了方向
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
char str[25][25];
int flag[25][25];
int main()
{
int c,r,i,j,front,rear;
while(scanf("%d%d",&c,&r)!=EOF,c*c+r*r)
{
memset(flag,0,sizeof(flag));
for(i=0;i<r;i++)scanf("%s",str[i]);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)

if(str[i][j]=='@')break;
if(str[i][j]=='@')break;
}
N.x = i;
N.y = j;

flag[i][j] = 1;
q[0] = N;
front = 0;
rear =1;

while(front<rear)
{
N = q[front++];
for(i = 0;i<4;i++)
{
int tx = N.x + dir[i][0];
int ty = N.y + dir[i][1];
if(tx>=0&&tx<r&&ty>=0&&ty<c&&flag[tx][ty]!=1&&str[tx][ty] == '.')
{
P.x =tx;
P.y =ty;
q[rear++] =P;
flag[tx][ty] = 1;
}
}
}
printf("%d\n",rear);
}
return 0;
}

ACM第一天研究懂的AC代码——BFS问题解答——习题zoj2165的更多相关文章

  1. 【南阳OJ分类之语言入门】80题题目+AC代码汇总

    小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...

  2. HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU2449.html 题目传送门 - HDU2449 题意 高精度高斯消元. 输入 $n$ 个 $n$ 元方程 ...

  3. python爬虫学习(7) —— 爬取你的AC代码

    上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...

  4. ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码

    这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...

  5. ZOJ Problem Set - 1334 Basically Speaking ac代码及总结

    这道题目不难,是一道简单的进制转换问题,但是发现了自己两个遗漏的知识点: 1.关于scanf (1)scanf函数在输入时是以回车或者空格作为一次输入的结束 (2)scanf函数在输入字符串的过程中是 ...

  6. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”

    按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...

  7. LeetCode OJ Symmetric Tree 判断是否为对称树(AC代码)

      思路: 主要判断左子树与右子树. 在判断左时,循环下去肯定会到达叶子结点中最左边的结点与最右边的结点比较. 到了这一步因为他们都没有左(右)子树了,所以得开始判断这两个结点的右(左)子树了. 当某 ...

  8. 【原创】用Python爬取LeetCode的AC代码到Github

    在leetCode写了105道题高调膜科,考虑搬迁到自己的GitHub上,做成一个解题题库,面试的时候也可以秀一个 但是!但是! leetCode在线IDE的功能不要太舒服,我直接线上A了不少题,本地 ...

  9. 洛谷P4014 分配问题【最小/大费用流】题解+AC代码

    洛谷P4014 分配问题[最小/大费用流]题解+AC代码 题目描述 有 n 件工作要分配给 n 个人做.第 i 个人做第 j 件工作产生的效益为c ij. 试设计一个将 n 件工作分配给 n 个人做的 ...

随机推荐

  1. 【LeeetCode】4. Median of Two Sorted Arrays

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

  2. memcache学习和分析

    Memcached 特点• 具有非常快的处理速度• 缺乏认证以及安全管制,应将其放置在防火墙之后• 重启后数据全部丢失• 可以给数据设置有效期• 适合使用大量低CPU的机器搭建集群• 各节点之间各自独 ...

  3. C# 三角形外心和外接圆半径计算方法

    在网上找了好久,想找一个现成的方法来用,折腾半天发现没有一个好用的,最后迫不得已自己写了一个,需要的同学可以直接拿去用, private void GetTriangleExcenterRadius( ...

  4. java程序基础

  5. ios下iphone的plus下

    二维码能被长按识别,但因为某种原因识别区域发生了偏移 meta标签定义了默认缩放为一倍就能识别,不定义就不能识别. 网上是这么说的: meta标签定义了默认缩放为一倍就能识别,不定义就不能识别.于是我 ...

  6. Redis 使用 Eval 多个键值自增操作示例

    在PHP上使用Redis 给多个键值进行自增,示例如下: $set['money'] = $this->redis->hIncrByFloat($key, $hour .'_money', ...

  7. Symfony命令大全

    执行命令: $ php bin/console 查看一下命令 Symfony version 3.1.5 - app/dev/debug Usage: command [options] [argum ...

  8. 超实用 JS 代码段笔记(一)

    序1:30段简单代码段(有删减) 1 . 区分 IE 和 非 IE 浏览器 if(!+[1,]){ console.log('ie浏览器'); }else{ console.log('非ie浏览器') ...

  9. Tomcat多域名的配置

    有时候我们有好几个项目需要发布在同一个tomcat服务器上,每个项目有不同的域名.这就需要在tomcat里配置多域名,添加多个虚拟主机. 主要在server.xml里面设置: 在<Engine& ...

  10. Python调用(运行)外部程序

    在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32pro ...