POJ 1979 深度優先演算法學習

2021-08-20 00:16:17 字數 1045 閱讀 2075

總時間限制: 

1000ms

記憶體限制: 

65536kb 描述

有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。

輸入包括多個資料集合。每個資料集合的第一行是兩個整數w和h,分別表示x方向和y方向瓷磚的數量。w和h都不超過20。在接下來的h行中,每行包括w個字元。每個字元表示一塊瓷磚的顏色,規則如下

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

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

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

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

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

樣例輸入

6 9 

....#.

.....#

......

......

......

......

......

#@...#

.#..#.

0 0

樣例輸出

45

**1979

用f[i][j]表示從i,j出發,到達瓷磚的總數,建立遞推

if 在邊界外

f[i][j]=0

if str[i][j]="#" f[i][j]=0

else str[i][j]=1 + str[i-1][j] + str[i+1][j] + str[i][j-1] + str[i][j+1]

#includeint w,h;

char array[21][21];

int digui(int x,int y)

}

int main()

{ int i,j;

while(scanf("%d%d",&h,&w)&&w!=0&&h!=0){

for(i=0;i

深度優先搜尋 POJ1979

在一張地圖上,以某一點為基準向上下左右四個方向擴充套件,在四個方向上屬性與基準點相同則認定為同乙個聯通塊,問總共有多少聯通塊?poj1979 給你乙個二維陣列,表示可以到達,表示障礙,表示起始位置,問你能到達的最大地點有多少個,每次只能走上下左右 直接dfs,中間加了很多狀態標記用來剪枝,但是發現沒...

深度優先演算法學習 案例

挑戰程式設計競賽第二版 巫澤俊 1.部分和問題 給定整數a1 a2 an,判斷是否可以從中選出若干數,使他們的和恰好為k。限制條件 1 n 20 10 8 ai 108 108 k 108 題解 利用深度優先演算法,分情況計算下去,遞迴。樣例 輸入 n 4 a k 15 輸出 no include ...

演算法學習 深度優先搜尋

深度優先搜尋 縮寫dfs 有點類似廣度優先搜尋,也是對乙個連通圖進行遍歷的演算法。它的思想是從乙個頂點v0開始,沿著一條路一直走到底,如果發現不能到達目標解,那就返回到上乙個節點,然後從另一條路開始走到底,這種盡量往深處走的概念即是深度優先的概念。廣度優先搜尋 bfs 是按照乙個樹的層次來完成搜尋的...