UVa 572 Oil Deposits
来源:互联网 发布:python google earth 编辑:程序博客网 时间:2024/05/18 15:25
Description
经典floodfill
Algorithm
flood fill
Hint
记得判断边界
Code
#include <cstdio>#include <cstring>#include <iostream>#include <stack>using namespace std;int m, n;const int maxm = 100 + 9;const int maxn = 100 + 9;const int dx[8] = {0, 0, 1, 1, 1, -1, -1, -1};const int dy[8] = {1, -1,0, 1, -1, 0, 1, -1 };bool g[maxm][maxn];struct V{ int x, y; V(int x, int y) : x(x), y(y) {}};void print(){ for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) if (g[i][j]) cout << '@'; else cout << '*'; cout << endl; } cout << endl;}void solve(){ memset(g, 0, sizeof(g)); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { char ch; cin >> ch; if (ch == '@') g[i][j] = true; } scanf("\n"); } int ans = 0; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) if (g[i][j]) { stack<V> s; s.push(V(i, j)); while (!s.empty()) { V now = s.top(); s.pop(); g[now.x][now.y] = false; for (int k = 0; k < 8; k++) { int x = now.x + dx[k]; int y = now.y + dy[k]; if (x < 0 || x >= m || y < 0 || y >= n) continue; if (g[x][y]) s.push(V(x, y)); } } ans++; } cout << ans << endl;}int main(){// freopen("input.txt", "r", stdin); for (;;) { cin >> m >> n; if (m == 0) break; solve(); }}
0 0
- uva 572 - Oil Deposits
- uva 572 - Oil Deposits
- uva 572 - Oil Deposits
- uva-572-Oil Deposits
- UVa 572 - Oil Deposits
- UVa 572 - Oil Deposits
- UVa 572 - Oil Deposits
- uva 572Oil Deposits
- UVa 572Oil Deposits
- UVa 572 - Oil Deposits
- UVa 572: Oil Deposits
- uva 572 Oil Deposits
- UVa 572 - Oil Deposits
- uva 572 oil Deposits
- uva 572 - Oil Deposits
- uva 572 - Oil Deposits
- UVa 572 - Oil Deposits
- UVA 572 Oil Deposits
- ConcurrentModificationException异常
- WaitForMultipleObjects使用详解
- Android权限
- android入门之使用adb shell 查看data目录下的SQLite数据库
- VS2015 scanf() scanf_s
- UVa 572 Oil Deposits
- Maven3 --- Eclipse集成Maven
- 九度 1010
- CentOS运行C++出现内存错误——double free or coruption
- 组合数
- 优先队列专题 poj 2431 2442 3190 1442 3614
- WHOJ 1606 - Funny Sheep【水】
- 抽奖系统数据库设计
- 使用Google浏览器必备的插件