ZOJ 1709 Oil Deposits(DFS)
来源:互联网 发布:横须贺刺绣外套淘宝 编辑:程序博客网 时间:2024/05/17 19:15
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.
Input
The input file 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.
Output
For each grid, output the number of distinct oil deposits. Two different pockets are part of the same oil deposit if they are 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 0
Sample Output
0
1
2
2
问题描述:所给出图像中油田的个数
解题思路:DFS
#include <iostream>#include <cstdio>using namespace std;int m,n; //m->row n->linechar map[101][101];int dir[8][2] = { {-1,-1},{-1,1},{-1,0},{0,1},{0,-1},{1,-1},{1,1},{1,0} };void DFS(int i,int j){ int k,si,sj; map[i][j] = '*'; for(k=0;k<8;k++) { si = i + dir[k][0]; sj = j + dir[k][1]; if(si<=0||sj<=0||si>m||sj>n) continue; if(map[si][sj]=='@') { DFS(si,sj); } }}int main(){ //freopen("test.txt","r",stdin); int i,j,pocket_num,si,sj,num;//num-> the num of @ pocket_num -> the num of pocket while(cin>>m>>n) { if(m==0) break; num = 0; pocket_num = 0; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { cin>>map[i][j]; if(map[i][j]=='@') { num++; } } } if(num==0) { cout<<0<<endl; continue; } for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(map[i][j]=='@') { map[i][j]='*'; DFS(i,j); pocket_num++; } } } cout << pocket_num <<endl; } return 0;}
- ZOJ 1709 Oil Deposits(DFS)
- poj 1562 || zoj 1709 Oil Deposits(DFS)
- ZOJ 1709 Oil Deposits(油田问题DFS)
- zoj 1562 Oil Deposits (DFS)
- zoj 1709 Oil Deposits
- zoj 1709 Oil Deposits
- ZOJ 1709 Oil Deposits
- ZOJ 1709 Oil Deposits
- zoj 1709 Oil Deposits
- zoj 1709 Oil Deposits
- ZOJ 1709 Oil Deposits
- ZOJ - 1709 Oil Deposits
- Oil Deposits(DFS)
- Oil Deposits (DFS)
- zoj 1709 || poj 1562 Oil Deposits(DFS 好吧,目前我就是专门找水题做的。。。)
- poj1562--Oil Deposits(DFS)
- HDU1241 Oil Deposits(DFS)
- hdu1241 Oil Deposits(dfs)
- android群英传之自定义View--对现有控件进行扩展(1)
- UIControl事件
- The C10K Problem -- 翻译版
- spring : HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动
- android--存储
- ZOJ 1709 Oil Deposits(DFS)
- installation failed since the device possibly has stale dexed jars that don't match the current vers
- ImageView 的使用
- 生成模型与判别模型
- MySQL基础语法(一)
- JS冒泡与阻止
- 安卓第七天笔记--网络编程一
- UIDatePicker
- Python List 删除元素