題目大意:有乙個長方形的房間,鋪滿了正方形瓷磚。每個瓷磚都是紅色或黑色的。乙個人站在一塊黑色的瓷磚上。從乙個瓷磚上,他可以移動到四個相鄰(上下左右)的瓷磚中的乙個。但是他不能移動到紅色的瓷磚,只能在黑色的瓷磚上移動。通過重複上面描述的動作,編寫乙個程式來計算他能達到的黑瓷磚的數量。
輸入:多個資料。第一行給出兩個數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 指...