题目描述

在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏。现在给你岛上的地图,求出岛上有多少个不同的家族。岛上的地图有n 行,每行有若干列,每个格子中要么是’空格表示大海,要么是‘ *’,表示河流或山丘,要么是小写字母,表示一户人家的姓氏。

输入

第一行是个数字 N,表示下面信息的行数,接下来是 N 行字符,每行由小写字母和*号组成,有些行的最前面也可能包含若干连续的空格,表示这些区域是大海,每一行最多不超过 200 个字符。

输出

一个数字,表示家族数。

样例输入

4
*zlw**pxh
l*zlwk*hx*
w*tyy**yyy
zzl

样例输出

3

数据范围限制

【数据范围】
10%的数据, n<=1
30%的数据, n<=10
100% 的数据, n<=100 每一行最多不超过 200 个字符

分析
这题其实就是细胞问题
遇到一个没有遍历过的点就从它开始搜,每搜一次,tj+1。

程序:

const
dx:array[1..4]of longint=(1,-1,0,0);
dy:array[1..4]of longint=(0,0,1,-1);
var
n,l,i,j,tj:longint;
a:array[0..301,0..301]of boolean;
s:string;
h:array[0..20001,1..2]of longint;
procedure work(p,q:longint);
var
i,w,t,x,y:longint;
begininc(tj);a[p,q]:=false;t:=1;w:=1;h[1,1]:=p;h[1,2]:=q;repeatfor i:=1 to 4 dobeginx:=h[t,1]+dx[i];y:=h[t,2]+dy[i];if (x>0)and(x<=n)and(y>0)and(y<=l)and(a[x,y]=true) thenbegininc(w);h[w,1]:=x;h[w,2]:=y;a[x,y]:=false;end;end;inc(t);until t>w;
end;beginassign(input,'family.in');reset(input);assign(output,'family.out');rewrite(output);readln(n);fillchar(a,sizeof(a),false);l:=0;for i:=1 to n dobeginreadln(s);for j:=1 to length(s) doif s[j]=' ' then a[i,j]:=false elseif s[j]='*' then a[i,j]:=false elsea[i,j]:=true;if length(s)>l then l:=length(s);end;tj:=0;for i:=1 to n dofor j:=1 to l doif a[i,j]=true then work(i,j);write(tj);close(input);close(output);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500007.html

【普及组模拟赛】家族相关推荐

  1. 计蒜客信息学3月普及组模拟赛

    A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图  题目链接 分值:100 时间限 ...

  2. DD 摆磁铁(计蒜客信息学8月普及组模拟赛)

    DD 摆磁铁 这道题来自 计蒜客信息学8月普及组模拟赛 普及组!! 把我一个TG选手看懵了 看来我要回去打普及了 题目大意 给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生 ...

  3. 1983. 【普及组模拟赛】手机(mobile)

    1983. [普及组模拟赛]手机(mobile) 题目描述 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x ...

  4. 【计蒜客模拟赛系列】-计蒜客2021年8月普及组模拟赛

    提前:本文中部分代码和思路有借鉴或摘抄计蒜客官方题解 赛后总结 本次模拟赛的难度总算正常了些 个人战绩: 220/400,排名61 ,太弱了,一大堆AK爷 题目质量评价: 题目相比CSP-J还是简单了 ...

  5. 【jzoj】2018.1.30NOIP普及组——模拟赛D组

    @_@ 前言 写博客时间 2018/1/30 22:36. 感想:出数据的dalao我服! 正题 题目1:二项式展开式(jzoj2254) 输入一个整数,求展开(a+b)^n.展开方式为 (a+b)^ ...

  6. 【普及组模拟赛】作业

    题目描述 光光上了高中,科目增多了.在长假里,光光的老师们都非常严厉,都给他布置了一定量的作业.假期里,光光一共有的时间是 k 小时.在长假前,老师们一共给光光布置了 n份作业,第 i 份作业需要的时 ...

  7. 【普及组模拟赛】游戏

    题目描述 Atlantis Island 沉没以前,传说中的猫老大和 King 是好朋友--King 很喜欢赌博,这次 King和老朋友猫老大多年不见, 于是便邀请猫老大来玩一个游戏,猫老大应邀参加了 ...

  8. 【普及组模拟赛】手机

    题目描述 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x. 0 键按一下会出一个空格. 你的任务是读取若干 ...

  9. 【2020.10.17 牛客 普及组 模拟赛一】T2 牛牛的跳跳棋

    题目描述 牛牛最近在玩一种叫做跳跳棋的游戏,棋盘可以看成是一个一维的线性数组,编号从1到n+1n+1n+1. 一开始牛牛的棋子位于第1个格子,游戏的最终目的是将棋子移动到第n+1n+1n+1个格子. ...

最新文章

  1. [微信小程序]物流信息样式加动画效果(源代码附效果图)
  2. burpsuite 实战指南
  3. Java中有哪些无锁技术来解决并发问题?如何使用?
  4. MySQL限制CPU资源使用_压缩大文件时如何限制CPU使用率?----几种CPU资源限制方法的测试说明...
  5. jrockit_JRockit – JRCMD有用的命令
  6. c mysql安装教程视频_MySQL安装教程 - Windows安装MySQL教程 - 小白式安装MySQL教程 - 青衫慧博客...
  7. 为什么中国人穷得只剩房子
  8. SQL Server创建视图
  9. Vue:vue组件生命周期
  10. mt4 指标 涨跌幅 颜色k线_通达信K线波段操盘指标公式
  11. TwinCAT软件的帮助如何使用
  12. 六十甲子亡命安葬山向宜忌
  13. ds12c887程序C语言,时钟芯片DS12C887使用说明详解.doc
  14. C#结合数据库开发通讯录管理系统
  15. 阿里云服务器没有公网IP
  16. windows10家庭版下找不到gpedit.msc
  17. 一口“臊子面”的背后,是西安小吃产业发展的缩影
  18. STM32串口中断接收标记USART_RX_STA 学习
  19. 设置InternetConnect的httpRequest连接数
  20. 中国计算机应用大会征稿通知,全球华人计算机教育应用大会(GCCCE)2015征稿启事...

热门文章

  1. [云炬python3玩转机器学习]4-3 训练数据集,测试数据集
  2. 我的个人网站更新了!
  3. 3DSlicer7:FAQ-1
  4. QString to const char*
  5. Qt小传——从诞生到发展、繁荣
  6. 【CyberSecurityLearning 附】批处理命令拓展(netsh/netstat/net)
  7. UE4中UnLua基础
  8. 【快乐水题】506. 相对名次
  9. SpringBoot @Configuration •@Import •@Conditional•@ImportResoure基本使用
  10. 排序二叉树BST(binary search/sort tree)