資訊學奧賽一本通 紅與黑

2021-10-04 04:20:28 字數 1282 閱讀 2172

演算法標籤 dfs,flood fill

題目描述

有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。

你站在其中一塊黑色的瓷磚上,只能向相鄰(上下左右四個方向)的黑色瓷磚移動。

請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。

輸入格式

輸入包括多個資料集合。

每個資料集合的第一行是兩個整數 w 和 h,分別表示 x 方向和 y 方向瓷磚的數量。

在接下來的 h 行中,每行包括 w 個字元。每個字元表示一塊瓷磚的顏色,規則如下

1)『.』:黑色的瓷磚;

2)『#』:白色的瓷磚;

3)『@』:黑色的瓷磚,並且你站在這塊瓷磚上。該字元在每個資料集合中唯一出現一次。

當在一行中讀入的是兩個零時,表示輸入結束。

輸出格式

對每個資料集合,分別輸出一行,顯示你從初始位置出發能到達的瓷磚數(記數時包括初始位置的瓷磚)。

資料範圍

1≤w,h≤20
輸入樣例:
6 9 

....#.

.....#

......

......

......

......

......

#@...#

.#..#.

0 0

輸出樣例:
45
思路

bfs遍歷所有點

深搜**更短,但層數過多更有可能爆棧。

c++ **

#include

#include

using

namespace std;

const

int n=25;

char g[n]

[n];

bool st[n]

[n];

//判斷走過沒

int w,h;

int dx=

,dy=

;//題目中能移動的相鄰的四個方向的偏移量

intdfs

(int x,

int y)

return cnt;

//返回數量

}int

main()

memset

(st,0,

sizeof st)

;//在多次狀態中都要使用 所以每次都要清空

cout<<

dfs(stax,stay)

<}return0;

}

資訊學奧賽一本通 1216 紅與黑 evd

題目描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入 包括多組資料。每組資料的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的h行中,...

資訊學奧賽一本通C 語言 1216 紅與黑

題目描述 有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入 包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的...

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...