WOJ-1167

2024-05-25 12:08
文章标签 1167 woj

本文主要是介绍WOJ-1167,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Problem 1167 - Oil Detecting
Time Limit: 1000MS Memory Limit: 65536KB Difficulty: 1
Total Submit: 475 Accepted: 212 Special Judge: No
Description
石油公司在某地开采石油,他们把地面(长方形)分成一个个的小正方形,然后逐个勘探,有的正方形探到了石油,而有的没有,如果有两个石油地是相连的(上下、左右、对角),则说明它们是同个石油点。
现在,公司已经把所有的勘探点都勘探好了,他们请你写个程序计算一下到底有多少个不同的石油点。

Input
第一个为两个整数r和c,表示地面的长和宽。下面为r行c列的字符矩阵,O表示该处有石油,X表示该处没有石油。1<= r <= 100, 1<=c<=100。若r = c = 0,则程序结束。

Output
对于每组测试数据,输出有多少个不同的石油点

Sample Input
1 10
XXOOXOXOOO
3 3
OXO
XOX
OXO
0 0

Sample Output
3
1

#include<iostream>
#include<stdio.h>
using namespace std;char arr[128][128];
int r , c ;void sarch(int m , int n)
{if (m < r && m >=0 && n < c && n >= 0)\{if (arr[m][n] == 'O'){arr[m][n] = 'X' ;sarch(m+1,n);sarch(m+1,n+1);sarch(m+1,n-1);sarch(m,n+1);sarch(m,n-1);sarch(m-1,n);sarch(m-1,n-1);sarch(m-1,n+1);}else return;}else return;
}int main ()
{int count ;while (scanf("%d%d",&r,&c) == 2 && r*c != 0){count = 0 ;for (int i = 0 ; i < r ; ++i)cin >> arr[i];for (int i = 0 ; i < r ; ++i)for (int j = 0 ; j < c ; ++j){if (arr[i][j] == 'O'){count ++ ;sarch(i,j);}}cout << count << endl;}}

很简单的一个图的遍历。把找到一个点之后,count增加1,递归遍历其周围的八个点,并将找到的点标记为X。

这篇关于WOJ-1167的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001459

相关文章

九度oj-1167-数组排序

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5400 解决:1718 题目描述: 输入一个数组的值,求出各个值从小到大排序后的次序。 输入: 输入有多组数据。 每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。 输出: 各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。 样例输入

【图像压缩】基于matlab JEPG图像压缩【含Matlab源码 1167期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划(Matlab) 神经网络预测与分类(Matlab) 优化求解(Matlab) 语音处理(Matlab

(eclipse ,idea,netBeans,,,,)WOJ 插件

WOJ 插件能让你看到各个项目的源码和文档,对于我们研究项目的非常的有帮助,非常的便利. 具体的请查看 http://www.worldofjava.org/homepage.do

woj 1022 Competition of Programming

贪心。记住这个。。。 /** Author: stormdpzh* Created Time: 2012/7/14 15:21:06* File Name: woj_1022.cpp*/#include <iostream>#include <cstdio>#include <sstream>#include <cstring>#include <string>#include

woj 1010 Alternate Sum

证明结论之后很简单。考虑集合中每个元素最终对和的贡献: (1)考虑集合中最大的一个元素,设为t,则在有 t 的子集中,求Alternate Sum时 t 一定是+的(因为它排序后只能在第一个位置),这样的集合有2 ^ (n - 1) 个,从而 t 的贡献为t * 2 ^ (n - 1); (2)考虑集合中第二大的元素 t1,它要在子集合中求Alternate Sum时以 - 的形式出现,则该子

woj 1006 Language of Animals

不要被数据范围吓到…… 链表+简单的bfs。不喜欢用链表所以写了vector。 /** Author: stormdpzh* Created Time: 2012/7/11 22:19:27* File Name: woj_1006.cpp*/#include <iostream>#include <cstdio>#include <sstream>#include <cstrin

woj 1005 Holding Animals

一个简单的背包问题。dp /** Author: stormdpzh* Created Time: 2012/7/11 21:23:48* File Name: woj_1005.cpp*/#include <iostream>#include <cstdio>#include <sstream>#include <cstring>#include <string>#includ

PAT甲级 1167 Cartesian Tree

已知是heaporder对inorder排序,然后gen树,要判断在inorder前一个节点的左右,就可以左右依次gen,得到相应的内容; 也可以不用gen树拿到最小值和index直接保存层序遍历,最小堆,最小值就是根节点划开左右branch,使用map自动排序的特点 不能使用数组存储res(10741824, -999) res[index] = v[pot]; 会越界,要使用map存储