*寒假水107——搜索【深搜】
2018-02-24 00:56
183 查看
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensing equipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket. If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite large and may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid.InputThe input contains one or more grids. Each grid begins with a line containing m and n, the number of rows and columns in the grid, separated by a single space. If m = 0 it signals the end of the input; otherwise 1 <= m <= 100 and 1 <= n <= 100. Following this are m lines of n characters each (not counting the end-of-line characters). Each character corresponds to one plot, and is either `*', representing the absence of oil, or `@', representing an oil pocket.
Outputare adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.Sample Input
Outputare adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0Sample Output
0 1 2 2
#include<iostream> #include<stdio.h> using namespace std; char map[101][101]; int a,b; int dir[8][2]={1,1, 1,-1, -1,1, -1,-1, 0,1, 0,-1, 1,0, -1,0}; void bfs(int x,int y) { int i,n,m; for(i=0;i<8;i++) { n=x+dir[i][0]; m=y+dir[i][1]; if(n<0||m<0||n>a-1||m>b-1||map [m]=='*') continue; map [m]='*'; bfs(n,m); } } int main() { int i,j,count; while(cin>>a>>b,a||b) { count=0; for(i=0;i<a;i++) scanf("%s",map[i]); for(i=0;i<a;i++) { for(j=0;j<b;j++) { if(map[i][j]=='@') { map[i][j]='*'; bfs(i,j); count++; } } } cout<<count<<endl; } return 0; }题解:深搜,尽在不言中。
相关文章推荐
- 寒假培训——简单搜索
- *寒假水98——搜索 【深搜】
- 寒假前刷题(5)搜索系列 bfs poj 1426
- 2018年全国多校算法寒假训练营练习比赛(第四场) - G - 老子的意大利炮呢(搜索)
- 寒假训练——POJ - 2488 A Knight's Journey 搜索+贪心
- sduacm16级寒假训练 搜索与背包
- 寒假前刷题(7)搜索系列 dfs hdu 1010
- 寒假前刷题(10)搜索系列 hdu 1242
- 寒假第四周训练——搜索笔记及杂记
- 寒假前刷题(8)搜索系列 dfs hdu 1241
- 2015 寒假搜索专题 I - Meteor Shower(BFS)
- *寒假水106——素数环 搜索
- 寒假前刷题(9)搜索系列 bfs hdu 1312
- 寒假水108——搜索【广搜】
- 2015 寒假搜索专题 K - Backward Digit Sums
- *寒假水109——搜索【深搜】
- 寒假前刷题(6)广度优先搜索 poj 3126
- *寒假水110——搜索【广搜】
- 寒假水111——搜索【深搜】
- 搜索-寒假作业