|
|
back to boardWhy wrong? Hi, I wrote the solution but I don't know what it is wrong. Could you plz check the code for me? Cause I don't know if I get the point correctly. #include <iostream> #include <queue> using namespace std; char arr[10][10]; class Coord { public: Coord() { } Coord(int nx, int ny) { x = nx; y = ny; } int x, y; }; void ReadFirst(int n, int x, int y) { arr[x - 1][y - 1] = '1'; for(int i = 1; i < n; i++) { cin >> x >> y; arr[x - 1][y - 1] = '1'; } } Coord neighbor(int x, int y, char ch) { switch(ch) { case 'R':return Coord(x + 1, y); case 'T':return Coord(x, y + 1); case 'L':return Coord(x - 1, y); case 'B':return Coord(x, y - 1); default: return Coord(x, y); } } void ReadSecond(int x, int y, char ch) { queue<Coord> theQueue; Coord tCor; arr[x][y] = '1'; while(ch != '.') { tCor = neighbor(x, y, ch); arr[tCor.x][tCor.y] = '1'; theQueue.push(tCor); while(true) { ch = cin.get(); while(iswspace(ch)) ch = cin.get(); if(ch == ',') { tCor = theQueue.front(); x = tCor.x; y = tCor.y; theQueue.pop(); } else break; } } } void PrintFirst() { int i, j, count = 0; for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++) { if(arr[i][j] == '1') count++; } } cout << count << endl; for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++) { if(arr[i][j] == '1') { cout << i + 1 << ' ' << j + 1 << endl; } } } } void PrintSecond() { int x, y; bool flag = false; for(x = 0; x < 10 && !flag; x++) { for(y = 0; y < 10; y++) { if(arr[x][y] == '1') { flag = true; break; } } } //first line coordinate x--; cout << x + 1 << ' ' << y + 1 << endl; queue<Coord> theQueue; Coord curCor, tCor; theQueue.push(Coord(x, y)); while(!theQueue.empty()) { curCor = theQueue.front(); theQueue.pop(); x = curCor.x; y = curCor.y; arr[x][y] = '0'; if(arr[x + 1][y] == '1') { theQueue.push(Coord(x + 1, y)); cout.put('R'); arr[x + 1][y] = '0'; } if(arr[x][y + 1] == '1') { theQueue.push(Coord(x + 1, y)); cout.put('T'); arr[x][y + 1] = '0'; } if(arr[x - 1][y] == '1') { theQueue.push(Coord(x + 1, y)); cout.put('L'); arr[x - 1][y] = '0'; } if(arr[x][y - 1] == '1') { theQueue.push(Coord(x + 1, y)); cout.put('B'); arr[x][y - 1] = '0'; } if(theQueue.empty()) cout << '.' << endl; else cout << ',' << endl; } } void main() { char ch, buffer[3]; int n, m; for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) arr[i][j] = '0'; } cin >> n; cin >> m; cin.get(); ch = cin.get(); if(ch >= '0' && ch <= '9') { buffer[0] = ch; ch = cin.get(); if(ch == ' ') { buffer[1] = '\0'; } else { buffer[1] = ch; buffer[2] = '\0'; } int y = atoi(buffer); ReadFirst(n, m, y); PrintSecond(); } else { ReadSecond(n - 1, m - 1, ch); PrintFirst(); } } |
|
|