Red and Black 深搜和廣搜

2021-09-13 20:22:26 字數 1276 閱讀 4021

題目大意:有乙個長方形的房間,鋪滿了正方形瓷磚。每個瓷磚都是紅色或黑色的。乙個人站在一塊黑色的瓷磚上。從乙個瓷磚上,他可以移動到四個相鄰(上下左右)的瓷磚中的乙個。但是他不能移動到紅色的瓷磚,只能在黑色的瓷磚上移動。通過重複上面描述的動作,編寫乙個程式來計算他能達到的黑瓷磚的數量。

輸入:多個資料。第一行給出兩個數m,n(0,0代表結束輸入);m代表列,n代表行。m,n均不超過20。對每一塊瓷磚,填入「@」代表人站的初始位置(黑磚),「.」代表黑色磚,「#」代表紅色磚.

輸出:輸出人能踩過的黑色磚的總數(第一塊人站的那個也算)。

輸入樣例:

6 9…#.…#…

…………

#@…#

.#…#.

11 9

.#….#.#######.

.#.#…#.

.#.#.###.#.

.#.#…@#.#.

.#.#####.#.

.#…#.

.#########.

…11 6

…#…#…#…

…#…#…#…

…#…#…###

…#…#…#@.

…#…#…#…

…#…#…#…

7 7…#.#…

…#.#…

###.###

…@…###.###

…#.#…

…#.#…

0 0輸出樣例:

4559613

**:深搜:`

#include#includeint w,h,ans;

char s[22][22];

int vis[22][22];

void dfs(int x,int y)

,,,};

vis[x][y]=1;

ans++;

for(int i=0;i<4;i++)

,,,};

vis[x][y]=1;

for(int i=0;i<4;i++)

;int bfs(int i,int j)

,,,};

node a,b;

queueq;

t=1;

a.x=i;

a.y=j;

q.push(a);

vis[i][j]=1;

while(!q.empty())

}} return t;

}int main()

}} printf("%d\n",t);

} return 0;

}

廣搜和深搜

一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...

深搜和廣搜

深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。基本思路 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依...

深搜和廣搜

qq 親密度用的是帶權圖中,每條邊都有乙個 weight 我們可以通過這個權重來表示 qq 好友間的親密度。鄰接矩陣儲存方法 對於無向圖來說,如果頂點 i 與頂點 j 之間有邊,我們就將 a i j 和 a j i 標記為 1 對於有向圖來說,如果頂點 i 到頂點 j 之間,有一條箭頭從頂點 i 指...