UVA 657 - The die is cast
2013-01-21 02:16
337 查看
求高手!又是Runtime Error...
只是为啥捏..
View Code
只是为啥捏..
View Code
#include <iostream> #include <algorithm> using namespace std; const int LENGTH = 50; struct Position{ int row; int col; }; void SearchBoundry(char pixel[][LENGTH], bool visit[][LENGTH], int x, int y, int w, int h, int& left, int& right, int&top, int& bottom) { int front = 0, rear = 1; Position pos[1000]; pos[0].row = x; pos[0].col = y; visit[x][y] = true; while (front < rear){ int row = pos[front].row, col = pos[front].col; front++; left = min(left, col); right = max(right, col); top = min(top, row); bottom = max(bottom, row); for (int i = max(0, row-1); i <= min(row+1, h); i++){ for (int j = max(0, col-1); j <= min(col+1, w); j++){ if (!((i == (row-1) || i == (row+1)) && (j == (col-1) || j == (col+1))) && !visit[i][j] && (pixel[i][j] == '*' || pixel[i][j] == 'X')){ visit[i][j] = true; pos[rear].row = i; pos[rear].col = j; rear++; } } } } } int CountDice(char pixel[][LENGTH], int& left, int& right, int& top, int& bottom) { int result = 0; for (int i = top; i <= bottom; i++){ for (int j = left; j <= right; j++){ if (pixel[i][j] == '*') pixel[i][j] = '.'; if (pixel[i][j] == 'X'){ result++; int front = 0, rear = 1; Position pos[250]; pos[0].row = i; pos[0].col = j; pixel[i][j] = '.'; while (front < rear){ int row = pos[front].row, col = pos[front].col; front++; for (int i = max(top, row-1); i <= min(row+1, bottom); i++){ for (int j = max(left, col-1); j <= min(col+1, right); j++){ if (!((i == (row-1) || i == (row+1)) && (j == (col-1) || j == (col+1))) && pixel[i][j] == 'X'){ pixel[i][j] = '.'; pos[rear].row = i; pos[rear].col = j; rear++; } } } } } } } return result; } int main(int argc, char *argv[]){ char pixel[LENGTH][LENGTH]; bool visit[LENGTH][LENGTH]; int w, h, count = 0; while (cin >> w >> h && w+h){ cout << "Throw " << ++count << endl; bool first = true; for (int i = 0; i < LENGTH; i++) for (int j = 0; j < LENGTH; j++){ pixel[i][j] = ' '; visit[i][j] = false; } for (int i = 0; i < h; i++) cin >> pixel[i]; for (int i = 0; i < h; i++){ for (int j = 0; j < w; j++){ if (pixel[i][j] == '*' || pixel[i][j] == 'X'){ int left = j, right = j, top = i, bottom = i; SearchBoundry(pixel, visit, i, j, w, h, left, right, top, bottom); int dice = CountDice(pixel, left, right, top, bottom); if (first) first = false; else cout << " "; cout << dice; } } } cout << endl; } return 0; }
相关文章推荐
- uva 657 The die is cast
- uva 657 - The die is cast
- UVA - 657 The die is cast
- uva 657 - The die is cast
- UVA 657 The die is cast
- UVa 657 - The die is cast
- UVa657 The die is cast(DFS)
- UVA 657 The die is cast ——bfs+dfs
- UVa 657 - The die is cast
- UVa 657 The die is cast
- uva 657 The die is cast
- UVA 657 - The die is cast
- uva657 The die is cast(搜索)
- UVa 657 & POJ 1481 - The die is cast
- UVA 657-The die is cast(双重BFS)
- UVA 657 - The die is cast 深度搜索
- uva 657 The die is cast(DFS遍历图)
- UVa-657 The die is cast(dfs嵌套)
- uva 657 - The die is cast
- UVA 657 The die is cast