Advertisement
Vic22

X49545 - Menacing Bishops

Jan 14th, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. typedef vector<char> Row;
  6. typedef vector<Row> Board;
  7.  
  8. Board read_board(int n) {
  9.    Board b(n, Row(n));
  10.    for (int i = 0; i < n; ++i) {
  11.       for (int j = 0; j < n; ++j) {
  12.           cin >> b[i][j];
  13.       }
  14.    }
  15.    return b;
  16. }
  17.  
  18. void write_menace(int i1, int j1, int i2, int j2) {
  19.    cout << "(" << i1 << "," << j1 << ") <--> (" << i2 << "," << j2 << ")" <<endl;
  20. }
  21.  
  22. void find_menaces(const Board & b, int ib, int jb) {
  23.     int n = b.size();
  24.     int i = ib;
  25.     int j = jb;
  26.     bool found = false;
  27.     while (i < n-1 and j > 0 and not found){
  28. //        BOTTOM LEFT
  29.         ++i;
  30.         --j;
  31.         if (b[i][j] == 'B'){
  32.             found = true;
  33.             write_menace(ib, jb, i, j);
  34.         }
  35.     }
  36.     i = ib;
  37.     j = jb;
  38.     found = false;
  39.     while (i < n-1 and j < n-1 and not found){
  40. //        BOTTOM RIGHT
  41.         ++i;
  42.         ++j;
  43.         if (b[i][j] == 'B'){
  44.             found = true;
  45.             write_menace(ib, jb, i, j);
  46.         }
  47.     }
  48. }
  49.  
  50. void check_board(const Board& b) {
  51.     int n = b.size();
  52.     for (int i = 0; i < n; ++i){
  53.         for (int j = 0; j < n; ++j){
  54.             if (b[i][j] == 'B') find_menaces(b, i, j);
  55.         }
  56.     }
  57. }
  58.  
  59. int main() {
  60.    int n;
  61.    int bn = 1;
  62.    while (cin >> n) {
  63.       Board b = read_board(n);
  64.       cout << "board num " << bn << endl;
  65.       ++bn;
  66.       check_board(b);
  67.       cout << "----------------" << endl;
  68.    }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement