C++ 数据结构之水洼的数量算法
C++数据结构之水洼的数量算法
题目:有一个大小为N*M的园子,雨后起了积水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼.
使用深度优先搜索(DFS),在某一处水洼,从8个方向查找,直到找到所有连通的积水.再次指定下一个水洼,直到没有水洼为止.
则所有的深度优先搜索的次数,就是水洼数.时间复杂度O(8*M*N)=O(M*N).
代码:
/* *main.cpp * *Createdon:2014.7.12 *本栏目更多精彩内容:http://www.bianceng.cn/Programming/sjjg/ *Author:spike */ #include#include #include #include classProgram{ staticconstintMAX_N=20,MAX_M=20; intN=10,M=12; charfield[MAX_N][MAX_M+1]={ "W........WW.", ".WWW.....WWW", "....WW...WW.", ".........WW.", ".........W..", "..W......W..", ".W.W.....WW.", "W.W.W.....W.", ".W.W......W.", "..W.......W."}; voiddfs(intx,inty){ field[x][y]='.'; for(intdx=-1;dx<=1;dx++){ for(intdy=-1;dy<=1;dy++){ intnx=x+dx,ny=y+dy; if(0<=dx&&nx 输出:
result=3感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
热门推荐
10 诗词送行祝福语大全简短
11 新房开工吉日祝福语简短
12 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短