hdoj1312Red and Black
来源:互联网 发布:故障算法工程师 编辑:程序博客网 时间:2024/05/17 20:26
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
代码:
#include<stdio.h>#include<string.h>char map[1010][1010];int vis[1010][1010],n,m,ans,sx,sy;void dfs(int x,int y){if(x<0||x>=m||y<0||y>=n||vis[x][y]||map[x][y]=='#')return ;vis[x][y]=1;ans++;dfs(x+1,y);dfs(x,y+1);dfs(x-1,y);dfs(x,y-1);}int main(){while(scanf("%d%d",&n,&m)&&n||m){ans=0;memset(vis,0,sizeof(vis));memset(map,0,sizeof(map));for(int i=0;i<m;i++){scanf("%s",&map[i]);for(int j=0;j<n;j++){if(map[i][j]=='@')sx=i,sy=j;}}dfs(sx,sy);printf("%d\n",ans);}return 0;}
思路:深搜,dfs,这是第一次接触深搜题,乍一看一点思路也没有啊,然后学长讲完之后也是晕头转向的,迷迷糊糊,晕。然后自己照着代码敲了几遍,记住代码,再根据代码慢慢看懂了,memset(vis,0,sizeof(vis)); memset(map,0,sizeof(map));这个是要记住的,就是把所有的行行竖竖清零,在dfs,bfs里经常用到。然后就是定义dfs了,要记住确定方向dfs(x+1,y);dfs(x,y+1);dfs(x-1,y);dfs(x,y-1);,分别代表上下左右,其次就是找原始的点,然后本题就ac啦,注意不会多多敲几遍哈!!
- hdoj1312Red and Black
- hdoj1312Red and Black
- hdoj1312Red and Black(递归)
- Red and Black
- red and black
- POJ_1979_Red and Black
- poj1979Red and Black
- Black Berry and IPhone
- HDUOJ1312 Red and Black
- Red and Black
- red and black
- Red and Black
- HDOJ Red and Black
- HDU1312( Red and Black )
- Red and Black
- hdu1312 Red and Black
- 深搜:Red and Black
- Black And White
- LINQ TO XML学习心得(一)
- 3.编辑器vi的使用
- UVa 725 Division(除法)
- 程序员如何谋划出月薪3万
- 课程设计--图书管理系统
- hdoj1312Red and Black
- Maven学习系列--05定制一个Maven项目
- Linux如何挂载网络硬盘
- 部分和问题
- HDU 1525 Euclid's Game 博弈
- JSON与XML的区别比较
- LeetCode : 101. Symmetric Tree
- 相关进程间实现互斥的几种方式
- shareSDK自定义分享界面UI