新七步诗

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

突然的一天,小锴做了一个梦,梦见自己来到了三国,而自己也成了梦寐以求的帅哥——曹植。不幸的是,小锴得罪了曹丕,而这个曹丕竟然长得跟小光会长一模一样,这......。这剧情有点狗血。于是,小光会长把小锴关进了一个矩形房间,这个房间被分成一个个边长为1的方块。这个房间除了小锴,还有凶猛的士兵,小锴只能在士兵把守的范围内活动。

Input:

多组测试数据。对于每组测试数据,首行是W和H(0<=W,H<=20),分别代表方块的列数和行数。接下来是房间的布局:
“.”:空的方块,即小锴可行走;
“X”:有士兵的方块,即小锴不能行走,也不能越过士兵;
“I”:小锴的初始位置。
当输入为两个0时,不做处理,结束测试。

Output:

对于每组测试数据,输出小锴可以行走的房间的面积。

Sample Input:

6 9
....X.
.....X
......
......
......
......
......
XI...X
.X..X.
7 7
..X.X..
..X.X..
XXX.XXX
...I...
XXX.XXX
..X.X..
..X.X..
0 0

Sample Output:

45
13
解题思路:暴力深搜,题意跟这题一样的,链接:ACM_魔仙岛探险(深搜)
AC代码:
 #include<bits/stdc++.h>
using namespace std;
int col,row,si,sj,dot,dir[][]={{-,},{,},{,},{,-}};char msp[][];
void dfs(int x,int y){
if(x<||y<||x>=row||y>=col||msp[x][y]=='X')return;
msp[x][y]='X';dot++;
for(int i=;i<;++i)
dfs(x+dir[i][],y+dir[i][]);
}
int main(){
while(~scanf("%d %d",&col,&row)&&(row+col)){
for(int i=;i<row;++i){
getchar();//吃掉回车符对字符读取的影响
for(int j=;j<col;++j){
scanf("%c",&msp[i][j]);
if(msp[i][j]=='I'){si=i;sj=j;}//记录深搜的起点
}
}
dot=,msp[si][sj]='.',dfs(si,sj);
printf("%d\n",dot);
}
return ;
}

ACM_新七步诗(深搜)的更多相关文章

  1. [学习笔记] 七步从AngularJS菜鸟到专家(7):Routing [转]

    这是"AngularJS – 七步从菜鸟到专家"系列的第七篇. 在第一篇,我们展示了如何开始搭建一个AngularaJS应用.在第四.五篇我们讨论了Angular内建的directives,上一篇了解 ...

  2. hdu 1026:Ignatius and the Princess I(优先队列 + bfs广搜。ps:广搜AC,深搜超时,求助攻!)

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  3. 七步,搭建基于Windows平台完美Jekyll博客环境

    最近,基于Jekyll新搭建了自己英文博客.整个过程搜索了不少资料,也尝试和过滤了不少工具和插件,最后的效果还是不错的.这里总结一下主要的七个步骤,感兴趣的朋友可以参考一下: 第一步,安装Ruby开发 ...

  4. [学习笔记] 七步从AngularJS菜鸟到专家(4和5):指令和表达式 [转]

    这一篇包含了"AngularJS - 七步从菜鸟到专家"系列的第四篇(指令)和第五篇(表达式). 之前的几篇展示了我们应用的核心组件,以及如何设置搭建一个Angular.js应用.在这一部分,我们会厘 ...

  5. 七步实现magento迁移

    很多朋友都在为magento搬家烦恼,要想把magento从一台服务器迁移到另一台服务器上并不难,下面给大家介绍一种简单方法就能轻松实现magento迁移. 范例:从http://magento.yo ...

  6. HDOJ/HDU 1242 Rescue(经典BFS深搜-优先队列)

    Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...

  7. 【深搜加剪枝】【HDU1455】【Sticks】

    题目大意:有一堆木棍 由几个相同长的木棍截出来的,求那几个相同长的木棍最短能有多短? 深搜+剪枝 具体看代码 #include <cstdio> #include <cstdlib& ...

  8. ****Curling 2.0(深搜+回溯)

    Curling 2.0 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total ...

  9. UVALive 2053 Puzzlestan(深搜+技巧)

    这个题目的深搜形式,我也找出来了,dfs(i,j)表示第i个人选到了第j个物品,但是我却无限RE了,原因是我的viod型深搜太过暴力,我当时定义了一个计数器,来记录并限制递归的层数,发现它已经递归到了 ...

随机推荐

  1. BZOJ 1370 团伙

    两个认识的人不是朋友就是敌人,且满足: 1,朋友的朋友是朋友: 2,敌人的敌人是朋友. 一群朋友组成一个团伙,给出m个信息,求有多少个团伙. 用并查集,把一个点x拆成x和x’ 若a与b为朋友,则将a与 ...

  2. 使用NamedParameterJdbcTemplate

    [在JDBC模板中使用具名参数] 1.在经典的JDBC用法中,SQL参数使用占位符?表示,并且受到位置的限制.定为参数的问题在于,一旦参数的顺序发生变化,就必须改变参数绑定. 2.在Spring JD ...

  3. ansible playbooks loop循环

    在一个task中循环某个操作 1.标准循环 - name: add several users user: name: "{{ item }}" state: present gr ...

  4. Poor Hanamichi

    Poor Hanamichi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. PhantomJS & headless browser & pdf

    PhantomJS http://phantomjs.org/ https://github.com/Medium/phantomjs https://github.com/Medium/phanto ...

  6. Win32编程API 基础篇 -- 2.一个简单的窗口 根据英文教程翻译

    一个简单的窗口 例子:简单的窗口 有时人们在IRC提问,”我应该怎样制作一个窗口”...嗯,这恐怕不是完全这么简单好回答!其实这并不难一旦你明白你在做什么,但在你得到一个可展示的窗口之前还有一些事情需 ...

  7. 通过JQUERY获取SELECT OPTION中选中的值

    遇到一样学一样. 一个是取KEY,一个是取VALUE,一个是取所有文本. var dbuser_select = $("#dbuser_select option:selected" ...

  8. Java数据库连接池研究

    一.背景 连接池简介: 连接池初始化时创建一定数量的连接,然后从连接池中重用连接,而不是每次创建一个新的. 数据库连接是一种关键的.有限的.昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对 ...

  9. url处理函数

    function UrlOption(url) { this.url = url || ''; this.init(); this.change = function (url) { this.url ...

  10. sizeof小览

    一.文章来由-一道面试题迁出的探究 我发现我已经形成一种习惯写来由了,以后看博客的时候能够让我回顾起为什么出现这个问题,我用什么方法解决的,既然形成习惯就让这个习惯保持下去吧.今天实验室师姐在看书,一 ...