洛谷P1506 2稿(使用DFS)

2021-10-05 23:54:37 字數 1644 閱讀 5777

解析:**:

題目:oibh被突來的洪水淹沒了

還好oibh總部有在某些重要的地方起一些圍牆,

用*號表示,

而乙個封閉的*號區域洪水是進不去的……

現在給出oibh的圍牆建設圖,

問oibh總部沒被淹到的重要區域(由"0"表示)有多少。

輸入格式:

第一行是兩個數,x和y(x,y<=500)

第二行及以下是乙個由和0組成的xy的圖。

輸出格式:

輸出沒被水淹沒的oibh總部的「0」的數量。

輸入輸出樣例:

輸入樣例1:

5 5

*****

*0*0*

**0**

*0*0*

*****

輸出樣例1:
5
解析:

前面已經寫過了一次1稿

這次的2稿和1稿

道理是大體相同的

所以題目是什麼意思

就不寫了

如果想要知道的話

可以去看1稿

這次使用dfs

也就是使用遞迴的方式搜尋

我們首先可以在這個的外圍

圍上一圈「0」

將所有會被衝到的地方

全部連線起來

接著我們用for

把外圍全部走一遍

在通過搜尋的方式

不斷地向裡延伸

最終剩下來的

就是沒被淹的

下面是**

**:

#include

#include

#include

#include

using

namespace std;

int n,m,sum=0;

char a[

501]

[501];

int xx[5]

=;int yy[5]

=;void

ddd(

int x,

int y)

}int

main()

}for

(int i=

0;i<=n;i++

) a[i][0

]='2';

for(

int i=

0;i<=m;i++

) a[0]

[i]=

'2';

for(

int i=

0;i<=m+

1;i++

) a[n+1]

[i]=

'2';

for(

int i=

0;i<=n+

1;i++

) a[i]

[m+1]=

'2';

for(

int i=

0;i<=n+

1;i++

)for

(int i=

0;i<=m+

1;i++

)/*for(int i=0;i<=n+1;i++) }

cout

//fclose(stdout);

return0;

}

拜拜!!!

單向DFS 洛谷P1101

這題跟以往的dfs不同的是,它是單向的dfs 因為我做題少,所以第一次見到這種型別的題目 思路很簡單,但是對於第一次做這種單向dfs的我來說 我蒻 開始確實感覺無從下手。這道題目和以往的dfs不同的地方在於,dfs的方向是在外面判斷的,然後還要記錄路徑,路徑記錄全了才能往vis裡面加true。直接看...

洛谷 P1019 dfs回溯

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能存在...

洛谷 P3956 棋盤(DFS)

有乙個m m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。當你從乙個格仔走向另乙個格仔時,如果兩個格仔的顏色相同,那你不需要花費金幣 如果不同,則你需...