POJ 1562 解题报告
来源:互联网 发布:李毅吧吧主是谁 知乎 编辑:程序博客网 时间:2024/06/05 18:51
这道题是简单题。就是对每个有油的点跑DFS,把相邻的有油点都标记为没油。这称为一趟。输出趟数即可。
thestoryofsnow1562Accepted172K0MSC++1318B/* ID: thestor1 LANG: C++ TASK: poj1562 */#include <iostream>#include <fstream>#include <cmath>#include <cstdio>#include <cstring>#include <limits>#include <string>#include <vector>#include <list>#include <set>#include <map>#include <queue>#include <stack>#include <algorithm>#include <cassert>using namespace std;const int MAXM = 100 + 1;const int MAXN = 100 + 1;int dx[8] = {-1, -1, 0, 1, 1, 1, 0, -1};int dy[8] = {0, 1, 1, 1, 0, -1, -1, -1};void dfs(char grid[][MAXN], int r, int c, const int R, const int C){grid[r][c] = '*';for (int d = 0; d < 8; ++d){int nr = r + dx[d];int nc = c + dy[d];if (nr >= 0 && nr < R && nc >= 0 && nc < C && grid[nr][nc] == '@'){dfs(grid, nr, nc, R, C);}}}int main(){char grid[MAXM][MAXN];int m, n;while (scanf("%d%d", &m, &n) > 0 && m){for (int i = 0; i < m; ++i){scanf("%s", grid[i]);}// printf("[debug]grid:\n");// for (int i = 0; i < m; ++i)// {// printf("[");// for (int j = 0; j < n; ++j)// {// printf("%c", grid[i][j]);// }// printf("]\n");// }int cnt = 0; for (int i = 0; i < m; ++i){for (int j = 0; j < n; ++j){if (grid[i][j] == '@'){cnt++;dfs(grid, i, j, m, n);}}}printf("%d\n", cnt);}return 0;}
0 0
- POJ 1562 解题报告
- poj数百篇解题报告
- poj 1141解题报告
- poj 1001解题报告
- poj 1011 解题报告
- poj 1087 解题报告
- poj 2153解题报告
- poj 2051解题报告
- POJ 1167 解题报告
- poj 1026 解题报告
- POJ 1077 解题报告
- POJ 1042 解题报告
- POJ 1095 解题报告
- POJ 1159解题报告
- poj 2312解题报告
- POJ 1001解题报告
- POJ 1002解题报告
- POJ 1006解题报告
- iOS-Core-Animation-Advanced-Techniques(七-1)
- Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法
- HDU 5029 Relief grain (2014年广州赛区网络赛H题)
- Leetcode - 258 - Add Digits
- [BZOJ1492][NOI2007]货币兑换Cash
- POJ 1562 解题报告
- [hash 表达式树]UVa12219 - Common Subexpression Elimination
- MYSQL管理之主从同步管理
- SDUT 1400 马的走法 简单dfs
- LCD 显示文字与图片
- UVA 514 Rails
- 题目:寻找旋转排序数组中的最小值 II
- kafka无法关闭的解决方法
- SSH三大框架面试题