抓猫

题面如下:

【 题目描述】
流浪猫布满城市的每一个角落, 非常影响市容市貌, 作为城市聘请的抓猫者, 你有一
种捕捉器, 一定可以捕捉到所有走到里面的猫, 更加幸运的是你有一个非常厉害的动物心理
学家, 他可以预测猫在不同位置的行走方向(共有东、 西、 南、 北四种情况)
为了节约经费, 问你最少需要多少个捕捉器才能把所有的猫都抓住。
【 输入格式】
输入第一行包含两个整数 N 和 M(1<=N,M<=1000),表示城市被划分成 N×M 的网格。接
下来 N 行, 每行包含 M 个字符“ E”、“ W”、“ S”、“ N” 代表东、 西、 南、 北 4 个方向, 表
示当猫在该位置的行走方向, 保证猫不会走出城市区域。
【 输出格式】
输出一个整数表示最少需要的捕捉器数。
【 样例输入输出】
D.in
3 4
SWWW
SEWN
EEEN

D.out
2
【 数据说明】
40% 1<=N,M<=4
100% 1<=N,M<=1000
【 样例说明】 捕鼠器放在( 3,4) 点和( 2,2) 点或( 2,3) 点。

这道题是一道模拟题,需要用到的技巧如下:

·枚举 ·递归(DFS)

从题意来看,这道题的题意就是求集合的数量;但在寻找集合的时候,需要进行集合的合并(※)。

我解这题只需要两个数组: 一个用来存图; 一个用作判断这块区域是否走过。

首先要解决的是如何寻找集合:

初始化[判断数组]为 TRUE,然后枚举每个点,如果没走过就 find 一遍。

如何实现集合的合并(find):

你只需要在[探索区间]的时候,遇到一个已经走过的,那么可以直接退出,且ANS 不需要加一。这是因为对于当前的集合来说,已经遇到了[另一个集合]。这时,如果继续往下走,就会走与之前集合一样的路,但这两个集合是要合并的,所以没有必要继续走下去。

code

if(find(i,j)==)ans++;

void find(int x,int y)
{
if(b[x][y]!=)
{
if(b[x][y]==cnt){ans++;return;}
else return ;
}
b[x][y]=cnt;
if(a[x][y]=='E')find(x,y+);
if(a[x][y]=='W')find(x,y-);
if(a[x][y]=='N')find(x-,y);
if(a[x][y]=='S')find(x+,y);
}

时间复杂度:O(N*M)

抓猫_KEY的更多相关文章

  1. 一个抓猫的游戏 消遣GAME 持续更新中!

    一个抓猫的游戏 版本 Catch_Cat_V0.30 https://files-cdn.cnblogs.com/files/send-off-a-friend/Catch_Cat_V0.3.rar ...

  2. BZOJ1001_狼抓兔子_KEY

    题目传送门 由题意得是最小割问题,又由最大流最小割定理可得只需要求无向图的最大流即可. 建双向边,跑Dinic,EK会超时. 注意在DFS时要加"if(!res)dist[now]=0;&q ...

  3. C++常用特性原理解析

    在我的早期印象中,C++这门语言是软件工程发展过程中,出于对面向对象语言级支持不可或缺的情况下,一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖. 它驳杂万分,但引人入胜,出于多(mi ...

  4. 【转】Android各大发布市场

    前言 如果只有一个或者少许的两三个Android市场,本文也没用存在的必要性,本文谨献给同在Android奋战的同仁. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...

  5. 开发者如何利用工具快速开发出完美APP

    文|移动互联网李建华 微信:ydhlwdyq 传统的个人开发者,要想开发出一个完美的APP要 经过以下几个过程:搭建开发环境,写代码,写统计系统,开发即将完成后,要购买服务器,然后把程序布置到服务器上 ...

  6. 嵌入式OS的现状、智能的物联网与未来的机器人

    嵌入式开发是一个低调的领域.相比Web开发和企业级开发,嵌入式开发这一领域似乎很少在互联网上发出声音.随着智能设备的兴起,智能手环.手表.眼镜.灯泡等产品成为互联网企业的下一个目标,而物联网这一概念再 ...

  7. 获取技能的成功经验和关于C语言学习的调查 2015528

    内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...

  8. [ios2]BaaS服务收藏 【转】

    首先,什么是BaaS服务: BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务.SaaS(软件即服务:Software as a Servic ...

  9. Android_学习系列(33)--App应用之提交到各大市场渠道

    本文同步更新在http://hmu140482.chinaw3.com/?p=315.    Android的终端碎片化问题,是一个很讨厌的问题.    而对于国内开发者来说,Android的市场“碎 ...

随机推荐

  1. 通讯聊天工具(pingin)

    pidgin需要添加插件才可以进行QQ,msn,facebook等聊天 sudo apt-get install pidgin(ubuntu 可以直接进行安装) sudo add-apt-reposi ...

  2. Oracle 查找带有CLOB字段的所有表

    查找带有CLOB字段的以HEHE开头的所有表 select t.column_name ,DATA_TYPE,TABLE_NAMEfrom user_tab_columns twhere t.TABL ...

  3. 在powerdesigner 中出现Could not Initialize JavaVM! 应该怎么解决

    利用powerdesigner反向生成表结构时会报这个错: 请检查你的环境变量配置: 系统变量 CLASSPATH = E:\Workspaces\my-jar\mysql-connector-jav ...

  4. UVa 12716 - GCD XOR(筛法 + 找规律)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. 7、springmvc的自动配置

    1.springmvc的自动配置 文档:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot ...

  6. Linux实用指令(2)

    cat指令     cat 查看文件内容,只读的方式 • 基本语法     cat [选项] 要查看的文件 • 常用选项     -n :显示行号 • 应用实例   注意:cat 只能浏览文件,而不能 ...

  7. mac 系统安装selenium注意事项

    mac最新系统:OS X EI Captian python: 本机自带的python2.7. (本来想升级3.5,觉得太复杂,放弃了) pip: https://pypi.python.org/py ...

  8. 把list(对象)集合中的(某个属性),放到数组中。

    List<SpecialguardInfo> list=specialguardOrderService.findfreeSg(date1,date2);//得到list对象集合 Stri ...

  9. 课时53.video标签第二种格式(掌握)

    由于视频数据非常非常的重要,所以五大浏览器厂商都不愿意支持别人都视频格式,所以导致了没有一种视频格式是所有浏览器都支持的,这个时候W3C为了解决这个问题,所以推出了第二种video标签的格式 如何查看 ...

  10. Android 中Dialog的使用

    本文是参考ProAndroid的第10章Working with Dialogs的内容,在合适的地方添加了作者自己的一些见解最终成文. Android 中的对话框是一个展示在当前窗口上的小一号的窗口, ...