Ural 1033
2010-12-01 16:21
288 查看
题意:求游客进入迷宫能看到的墙的面积
WA点:注意两个入口可能不连通,所以两边都要搜索
代码:
WA点:注意两个入口可能不连通,所以两边都要搜索
代码:
//============================================================================ // Name : Test.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <cstdio> using namespace std; char a[36][36]; int n; int b[36][36]; int dx[] = { 1, 0, -1, 0 }; int dy[] = { 0, -1, 0, 1 }; bool vis[36][36]; bool isOK(int i, int j) { return i > 0 && i <= n && j > 0 && j <= n && a[i][j] == '.'; } void DFS(int i, int j) { // if(!isOK(i,j)) // return; if (vis[i][j]) return; vis[i][j] = true; int tx, ty; for (int w = 0; w < 4; w++) { tx = j + dx[w]; ty = i + dy[w]; //cout << "tx = " << tx << " ty = " << ty << endl; if (isOK(ty, tx)) { DFS(ty, tx); } else b[i][j]++; } } int main() { cin >> n; getchar(); for (int i = 1; i <= n; i++, getchar()) { for (int j = 1; j <= n; j++) a[i][j] = getchar(); } //cout << "****" << endl; DFS(n, n); // cout << "****" << endl; // for (int i = 1; i <= n; i++) { // for (int j = 1; j <= n; j++) // cout << b[i][j]; // cout << endl; // } int sum = 0; if (!vis[1][1]) { DFS(1, 1); } sum -= 4; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) sum += b[i][j]; } //cout << "sum = " << sum<< endl; cout << sum * 9 << endl; return 0; }
相关文章推荐
- URAL 1033 Labyrinth (DFS)
- URAL 1033 Labyrinth
- URAL 1033|Labyrinth|搜索
- 【BFS】ural 1033
- Ural 1033 Labyrinth(bfs)
- Ural1033 FloodFill 算法
- 【Ural 1033】 Labyrinth.(迷宫)
- Labyrinth (URAL 1033)
- ural 1033 Labyrinth
- URAL/1033 迷宫
- URAL 1033 Labyrinth
- ural 1033. Labyrinth(dfs)
- ural 1033. Labyrinth(dfs)
- URAL 6089 Nine
- 13 URAL1303 Minimal Coverage
- hihoCoder #1033 : 交错和 [ 数位dp ]
- URAL1635——DP+回溯——Mnemonics and Palindromes
- URAL1029——DP+回溯——Ministry
- URAL 1988 - Planet Ocean Landing【几何&三分答案】
- URAL 1183.Brackets Sequence ( DP+记录路径)