普及組模擬賽 家族

2021-08-15 02:03:01 字數 2010 閱讀 3415

題目描述

在乙個與世隔絕的島嶼上,有乙個有趣的現象:同乙個家族的人家總是相鄰的(這裡的相鄰是指東南西北四個方向),不同的家族之間總會有河流或是山丘隔絕,但同乙個家族的人不一定有相同姓氏。現在給你島上的地圖,求出島上有多少個不同的家族。島上的地圖有n 行,每行有若干列,每個格仔中要麼是』空格表示大海,要麼是『 *』,表示河流或山丘,要麼是小寫字母,表示一戶人家的姓氏。

輸入第一行是個數字 n,表示下面資訊的行數,接下來是 n 行字元,每行由小寫字母和*號組成,有些行的最前面也可能包含若干連續的空格,表示這些區域是大海,每一行最多不超過 200 個字元。

輸出乙個數字,表示家族數。

樣例輸入

4 *zlw**pxh

l*zlwk*hx*

w*tyy**yyy

zzl樣例輸出

資料範圍限制

【資料範圍】

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);

varn,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);

vari,w,t,x,y:longint;

begin

inc(tj);

a[p,q]:=false;

t:=1;w:=1;

h[1,1]:=p;

h[1,2]:=q;

repeat

for i:=1to4

dobegin

x:=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) then

begin

inc(w);

h[w,1]:=x;

h[w,2]:=y;

a[x,y]:=false;

end;

end;

inc(t);

until t>w;

end;

begin

assign(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 do

begin

readln(s);

for j:=1

to length(s) do

if s[j]=' '

then a[i,j]:=false

else

if s[j]='*'

then a[i,j]:=false

else

a[i,j]:=true;

if length(s)>l then l:=length(s);

end;

tj:=0;

for i:=1

to n do

for j:=1

to l do

if a[i,j]=true

then work(i,j);

write(tj);

close(input);

close(output);

end.

1985 普及組模擬賽 家族(family)

題目描述 在乙個與世隔絕的島嶼上,有乙個有趣的現象 同乙個家族的人家總是相鄰的 這裡的相鄰是指東南西北四個方向 不同的家族之間總會有河流或是山丘隔絕,但同乙個家族的人不一定有相同姓氏。現在給你島上的地圖,求出島上有多少個不同的家族。島上的地圖有n 行,每行有若干列,每個格仔中要麼是空格表示大海,要麼...

2020 10 05 普及組 模擬賽C組總結

總結這次考試沒發揮好,第二題沒有拿滿分,下次要繼續努力 t1 superpow 10 題目大意 已知a b 超級冪 代表 b個a的冪,求n對數的超級冪之積的個位數。正確思路 當打表後可以發現 b是沒用的,如果b大於2,b就等於2,答案和原來的是一樣的。所以處理一下跑個快速冪就行了。至於為什麼拿10分...

2020 11 14 普及組 模擬賽C組總結

這是乙個好東西 作者主頁 t1 操作 題目大意 給你乙個數列,讓你執行一些操作後輸出。這一題找規律即可。t2 遊戲 題目大意 判斷每個人被攻擊和攻擊的情況是否符合題目要求。思路 找規律。因為中間不可能出現三個一樣的攻擊操作,所以只需要判斷有沒有大於3的連續操作,直接輸出個數即可。提示 t3 到達 題...