Problem 1011
来源:互联网 发布:网络建设 ppt 编辑:程序博客网 时间:2024/05/18 00:42
探索油田的数量,用@表示存在油田,*表示不存在油田,如果两个油田相邻,则将这两个看成一个油田,计算油田的数量
解题思路:
实际上这几个题的本质都是利用深度优先搜索进行计算油田的数量,建立一个 标记数组,再建立一个数组进行保存油田信息,然后建立一定的规则对数组的每一个数组进行搜索,看是否满足要求,对已经访问过的位置进行标记,以免重复搜索。
编写代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 200;
char dep[maxn][maxn];
int id[maxn][maxn];
int row, col;
void dfs(int r, int c, int num) {
if(r >= row || r < 0 || c >= col || c < 0) return;
if(dep[r][c] != '@' || id[r][c] != 0) return;
id[r][c] = num;
for(int i = -1; i <= 1; i++)
for(int j = -1; j <= 1; j++)
if(i != 0 || j != 0) dfs(r + i, c + j, num);
}
int main()
{
while(scanf("%d%d", &row, &col) == 2 && row && col) {
for(int i = 0; i < row; i++)
scanf("%s", dep[i]);
int num = 0;
memset(id, 0, sizeof(id));
for(int i = 0; i < row; i++)
for(int j = 0; j < col; j ++) {
if(id[i][j] == 0 && dep[i][j] == '@') dfs(i, j, ++num);
}
printf("%d\n", num);
}
return 0;
}
- Problem 1011
- Problem 1011
- 1011 Problem K
- 1011 Problem K
- 1011 Problem K
- problem
- Problem
- problem
- Problem
- Problem
- Problem
- Problem
- Problem
- Problem
- problem
- Problem
- Problem
- Problem
- 自定义View-3-重写onLayout
- nyoj 195 飞翔
- 块元素和行内元素(内联元素)
- Snort学习笔记
- 神经网络 neural network
- Problem 1011
- 机房水题欢乐赛 2016-04-16
- Android Studio调试工具总结
- 突然想到的死循环
- 【NOIP2015模拟11.3】备用钥匙
- Ubuntu 14.04 安装jdk
- 文档流的理解和定位(转)
- java之jsp笔记
- HDU 1198 Farm Irrigation(dfs)