HDU 1312 Red and Black DFS入门经典例题
来源:互联网 发布:筑巢软件上班怎么样 编辑:程序博客网 时间:2024/06/05 19:37
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he can move only on black tiles.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.
'.' - a black tile
'#' - a red tile
'@' - a man on a black tile(appears exactly once in a data set)
6 9....#......#..............................#@...#.#..#.11 9.#..........#.#######..#.#.....#..#.#.###.#..#.#..@#.#..#.#####.#..#.......#..#########............11 6..#..#..#....#..#..#....#..#..###..#..#..#@...#..#..#....#..#..#..7 7..#.#....#.#..###.###...@...###.###..#.#....#.#..0 0
4559613
这两天做的第四道DFS题了,,这题很水,但因为我在做题时的粗心改了段时间才改出来
错误一:将x方向的变量和y方向的变量混了,导致坐标都存错了
错误二:将全局变量作为参数传入了DFS函数,导致每回一次初始状态的DFS函数的调用累加起来的变量瞬间归零。
错误三:储存点移动方向的数组名起错了,与某个库中函数名重复了。
贴代码:
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#define maxn 25using namespace std;int m, n, idex[maxn][maxn], nums;char field[maxn][maxn];int nextj[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};void DFS(int x, int y){ if(x < 0|| y < 0|| x >= n|| y >= m) return; if(field[x][y] == '#' || idex[x][y] != 0) return; nums++; idex[x][y] = 1; int xx, yy; for(int i = 0; i < 4; i++) { xx = x + nextj[i][0], yy = y + nextj[i][1]; DFS(xx, yy); }}int main(){ while(scanf("%d %d", &m, &n)&& m) { memset(idex, 0, sizeof(idex)); int x, y; nums = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cin >> field[i][j]; if(field[i][j] == '@') { x = i, y = j; } } } DFS(x, y); cout << nums << endl; } return 0;}
阅读全文
0 0
- HDU 1312 Red and Black DFS入门经典例题
- hdu 1312 Red and Black(dfs入门)
- HDU 1312 Red and Black (DFS入门)
- #HDU 1312 Red and Black 【DFS入门】
- hdu 1312 Red and Black dfs
- hdu 1312 Red and Black (简单dfs)
- hdu 题目1312 Red and Black ( DFS )
- HDU--1312 -- Red and Black [简单DFS]
- HDU 1312 Red and Black(BFS,DFS)
- hdu 1312 Red and Black (bf、dfs)
- DFS-HDU 1312 -Red and Black
- hdu 1312 Red and Black(DFS)
- HDU--1312:Red and Black (DFS)
- HDU-#1312 Red and Black(DFS)
- HDU 1312 -- Red and Black(dfs)
- HDU 1312--Red and Black【DFS】
- HDU 1312Red and Black dfs
- hdu 1312 Red and Black(DFS)
- java 打印出如下图案(菱形)
- 关于线程与进程
- GDB No symbol "XXXXX" in current context
- sqlserver 截取两个固定字符串之间的值
- Docker学习总结(22)——Docke run命令详解
- HDU 1312 Red and Black DFS入门经典例题
- JAVA并发编程学习笔记之CAS操作
- localStorage使用总结
- java修改配置文件property的内容
- linux Xshell 命令符的基本知识点整理
- html,button的背景色和文字颜色
- [bzoj3445][ONTAK2010]Peaks 离线+线段树合并
- FileZilla使用ssh连接linux
- 快速排序解剖(递归)