藍橋杯校內模擬賽 2長草

2021-10-03 22:15:02 字數 1664 閱讀 7837

問題描述

小明有一塊空地,他將這塊空地劃分為 n 行 m 列的小塊,每行和每列的長度都為 1。

小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。

這些草長得很快,每個月,草都會向外長出一些,如果乙個小塊種了草,則它將向自己的上、下、左、右四小塊空地擴充套件,這四小塊空地都將變為有草的小塊。

請告訴小明,k 個月後空地上哪些地方有草。

輸入格式

輸入的第一行包含兩個整數 n, m。

接下來 n 行,每行包含 m 個字母,表示初始的空地狀態,字母之間沒有空格。如果為小數點,表示為空地,如果字母為 g,表示種了草。

接下來包含乙個整數 k。

輸出格式

輸出 n 行,每行包含 m 個字母,表示 k 個月後空地的狀態。如果為小數點,表示為空地,如果字母為 g,表示長了草。

樣例輸入

(在這裡為了方便大家看,我用中文打的標點符號)

4 5。。g 。。

。。。。。

。。g 。。

。。。。。

2樣例輸出

gggg.

gggg.

ggggg

.ggg.

評測用例規模與約定

對於 30% 的評測用例,2 <= n, m <= 20。

對於 70% 的評測用例,2 <= n, m <= 100。

對於所有評測用例,2 <= n, m <= 1000,1 <= k <= 1000。

思路:

我的想法比較粗暴簡單,如果在座各位有簡便演算法希望能夠指點指點我。

首先仔細讀題,草地會向上下左右的方向蔓延,在這裡我們反過來想,如果一塊空地的上下左右方向有草地,那麼那塊空地在這個月就會長草,因此我們只需要找到空地就可以了,然後對它上下左右方向進行判斷,理解起來簡單,但是感覺寫的**好長,暈。當然我們需要乙個超大的二維陣列。

#include

#include

#define n 1000

void

plant()

;void

copy()

;char ground[n]

[n];

char ground_c[n]

[n];

int n,m;

intmain()

}fflush

(stdin);

scanf

("%d"

,&k)

;for

(i=1

;i<=k;i++

)for

(i=0

;i(i!=n-1)

printf

("\n");

}return0;

}void

plant()

if(ground_c[i+1]

[j]==

'g')

if(ground_c[i]

[j-1]==

'g')

if(ground_c[i]

[j+1]==

'g')}}

}}void

copy()

}}

2023年藍橋杯模擬賽 長草

小明有一塊空地,他將這塊空地劃分為 n 行 m 列的小塊,每行和每列的長度都為 1。小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。這些草長得很快,每個月,草都會向外長出一些,如果乙個小塊種了草,則它將向自己的上 下 左 右四小塊空地擴充套件,這四小塊空地都將變為有草的小塊。請告訴小明...

藍橋杯校內模擬賽

1200000有多少個約數 只計算正約數 include using namespace std intmain if i i n ans 1 printf d ans 96 在計算機儲存中,15.125gb是多少mb?include using namespace std intmain 在1至2...

藍橋杯 2020 4 18 校內模擬賽

在計算機儲存中,12.5mb是多少位元組?將lanqiao中的字母重新排列,可以得到不同的單詞,如lanqiao aailnoq等,注意這7個字母都要被用上,單詞不一定有具體的英文意義。請問,總共能排列如多少個不同的單詞。乙個包含有2019個結點的無向連通圖,最少包含多少條邊?由1對括號,可以組成一...