这题其实和POJ的1979是同一道题,当时POJ使用cin写的,所以读入的时候,就很正确。

这次用scanf读入的时候,就出现了问题,我们在读完宽高之后,要用getchar吸收掉回车,然后每行末尾的回车也要用scanf吸收掉。

对于深搜函数的写法有多种,我在代码里面列了两种。

#include <cstdio>
#include <cstring>
int map[25][25];
int vis[25][25];
int sr, sc, ans, H, W;
int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; // void dfs(int r,int c)
// {
// ans++;
// map[r][c] = 0;
// for (int k = 0;k<4;k++) {
// int i = r + d[k][0];
// int j = c + d[k][1];
// if (i>=0&&j>=0&&i<H&&j<W&&map[i][j]) {
// dfs(i, j);
// }
// }
// } void dfs(int r,int c)
{
if (map[r][c])
ans++;
for (int i=0;i<4;i++) {
int row = r + d[i][1];
int col = c + d[i][0];
if (row>=0&&col>=0&&row<H&&col<W&&map[row][col]&&!vis[row][col]) {
vis[row][col] = 1;
dfs(row, col);
}
}
} int main()
{
char ch;
while (scanf("%d%d",&W,&H)&&W+H) {
getchar();
memset(map, 0, sizeof(map));
memset(vis, 0, sizeof(vis));
for (int i = 0; i < H;i++) {
for (int j = 0; j < W;j++) {
scanf("%c", &ch);
if (ch=='.')
map[i][j] = 1;
else if (ch=='@') {
sr = i;
sc = j;
map[i][j] = 1;
}
}
getchar();
}
// for (int i = 0; i < H;i++) {
// for (int j = 0; j < W;j++) {
// printf("%d", map[i][j]);
// }
// printf("\n");
// }
ans = 0;
vis[sr][sc] = 1;
dfs(sr,sc);
printf("%d\n", ans);
}
return 0;
}

HDU-1312-Black and Red的更多相关文章

  1. HDU 1312 Red and Black --- 入门搜索 BFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  2. HDU 1312 Red and Black --- 入门搜索 DFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  3. HDU 1312:Red and Black(DFS搜索)

      HDU 1312:Red and Black Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & ...

  4. HDU 1312 Red and Black(bfs,dfs均可,个人倾向bfs)

    题目代号:HDU 1312 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/100 ...

  5. HDU 1312 Red and Black (dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...

  6. HDU 1312 Red and Black(DFS,板子题,详解,零基础教你代码实现DFS)

    Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. HDU 1312 Red and Black(最简单也是最经典的搜索)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...

  8. HDU 1312 Red and Black(经典DFS)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 一道很经典的dfs,设置上下左右四个方向,读入时记下起点,然后跑dfs即可...最后答 ...

  9. HDU 1312 Red and Black (DFS & BFS)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...

  10. hdu 1312 Red and Black

    Problem Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

随机推荐

  1. iOS开发 - CocoaPods的常见使用方式

    1 CocoaPods 的安装 1.1 作用: 帮助管理和维护第三方框架,快速的搜索到第三方框架, 然后自动集成到工程里面来, 并编译成一个libPod.a的静态库给我们项目用 1.2 理解:  1. ...

  2. PAT甲级——1131 Subway Map (30 分)

    可以转到我的CSDN查看同样的文章https://blog.csdn.net/weixin_44385565/article/details/89003683 1131 Subway Map (30  ...

  3. mongodb javaapi网页版链接

    http://www.open-open.com/doc/view/abe58dc8d0114ef2bd34d0bbccd3691e

  4. Verify the Developer App certificate for youraccount is trusted on your device

    运行时报错-Verify the Developer App certificate for youraccountis   trusted on your device. Open Settings ...

  5. jmeter常用的beanshell脚本

    时间戳下载文件保存响应内容断言连接数据库解析jsonlist递归创建多级目录 常用内置变量调用cmd文件GUI小命令 时间戳import java.text.SimpleDateFormat;impo ...

  6. IE_Script70:没有权限问题处理

    IE9浏览器执行JS时报"SCRIPT70:没有权限"错误. 经百度,发现原来与jQuery版本有关系,在jQuery1.9.1版本时会有此问题,升级版本即可.

  7. svn基本命令

    *验证svn安装是否成功 #svnadmin --version *创建svn的数据仓库 #svnadmin create /data/svn/svndata/spms *启动svn服务 #svnse ...

  8. 关于Mybatis的一点小记录(parameterType)

    1.Mybatis的parameterType有两个比较常用的,一个是类的对象,还有一个就是Map,然后取值的方法也很简单: 基本数据类型:#{参数} 获取参数中的值 复杂数据类型:#{属性名} ,m ...

  9. 543 Diameter of Binary Tree 二叉树的直径

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点.示例 :给定二叉树          1         / \        2 ...

  10. C51存储的优化

    我们知道51单片机只有128BYTE的RAM, 有的增强型有XRAM,此时编程时就要注意,否则就有可能超出空间 1 对于各模块的全局变量.静态变量.全局枚举型常量,静态枚举型常量.个别操作存储(如外部 ...