本文主要是介绍UVa 572: Oil Deposits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这道题很简单,深搜+标记就可以做出来了。
我的解题代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
using namespace std;char grid[100][100];
int m,n;
int visit[100][100];const int dx[] = { -1, 1, 0, 0, -1, 1, -1, 1 };
const int dy[] = { 0, 0, -1, 1, -1, -1, 1, 1 };void dfs(int x, int y)
{visit[x][y]=1;for(int d=0; d<8; d++){int newx = x + dx[d];int newy = y + dy[d];if(newx>=0 && newx<m && newy>=0 && newy<n){if(grid[newx][newy]=='@' && !visit[newx][newy]){dfs(newx, newy);}}}
}int main()
{int num_deposit;while(cin >> m >> n && m!=0){for(int i=0; i<m; i++){for(int j=0; j<n; j++){cin >> grid[i][j];visit[i][j] = 0;}}num_deposit = 0;for(int i=0; i<m; i++){for(int j=0; j<n; j++){if(grid[i][j]=='@' && !visit[i][j]){dfs(i,j);num_deposit++;}}}cout << num_deposit << endl;}return 0;
}
这篇关于UVa 572: Oil Deposits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!