藍橋杯 長草(C )

2021-10-21 08:29:56 字數 1556 閱讀 6571

【問題描述】

小明有一塊空地,他將這塊空地劃分為 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。

1.先掃瞄初始陣列中『g』的個數和其位置,並記錄下來。

2.第一步記錄的所有座標往四周擴散。

3.重複第一步,直到k次後或者地圖全部長滿草時,退出迴圈。

4.列印草地。

#include #include using namespace std;

char s[1000][1000];

char temp[1000][1000];

int m, n, kp;

int smr(); /*掃瞄s陣列中的所有『g』並複製到temp陣列的同一位置上*/

void pri(); /*列印陣列s*/

void soi(); /*掃瞄temp**現『g』的位置,並且把s的同一位置的四周替換為『g』*/

int main()

} cin >> kp;

for (int i = 1; i <= kp; ++i)

soi();

fill(temp[0], temp[0] + 1000000, 0); /*把陣列temp的所有成員賦值為0*/

} pri();

return 0;

}int smr()

else

}} return sum;

}void pri()

cout << endl; }}

void soi()

if (j < 999)

if (k > 0)

if (k < 999)

}} }

}

樣例通過

BFS演算法 藍橋杯長草問題

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

藍橋杯校內模擬賽 2長草

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

2023年藍橋杯模擬賽 長草

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