Слоны и ладьи

На шахматной доске расположены несколько слонов и ладей. По условным буквенным обозначениям фигур и их координатам определите, сколько свободных полей шахматной доски не находятся под боем ни одной из этих фигур.


Входные данные


Шахматная доска описывается в восьми строках входных данных. Первые восемь символов каждой из этих строк описывают состояние соответствующей горизонтали: символ B (заглавная латинская буква) означает, что в клетке стоит слон, символ R — ладья, символ * — что клетка пуста.


Выходные данные


Выведите количество пустых клеток, которые не бьет ни одна из фигур.


Примеры

Ввод

Вывод

********

********

*R******

********

********

********

********

**Помогите написать программу на python или с++!!!!!

Ответы

Ответ дал: nekit2006srd
0

Ответ:

#include <bits/stdc++.h>

using namespace std;

char a[8][8];

void R(int y, int x){

   for(int q = y - 1; q >= 0 and a[q][x] != 'B' and a[q][x] != 'R'; q--){

       a[q][x] = '.';

   }

   for(int q = y + 1; q < 8 and a[q][x] != 'B' and a[q][x] != 'R'; q++){

       a[q][x] = '.';

   }

   for(int q = x - 1; q >= 0 and a[y][q] != 'B' and a[y][q] != 'R'; q--){

       a[y][q] = '.';

   }

   for(int q = x + 1; q < 8 and a[y][q] != 'B' and a[y][q] != 'R'; q++){

       a[y][q] = '.';

   }

}

void B(int y, int x){

   int q, e;

   q = y - 1;

   e = x - 1;

   for(;q >= 0 and e >= 0 and a[q][e] != 'B' and a[q][e] != 'R';){

       a[q][e] = '.';

       q--;

       e--;

   }

   q = y + 1;

   e = x + 1;

   for(;q < 8 and e < 8 and a[q][e] != 'B' and a[q][e] != 'R';){

       a[q][e] = '.';

       q++;

       e++;

   }

   q = y - 1;

   e = x + 1;

   for(;q >= 0 and e < 8 and a[q][e] != 'B' and a[q][e] != 'R';){

       a[q][e] = '.';

       q--;

       e++;

   }

   q = y + 1;

   e = x - 1;

   for(;q < 8 and e >= 0 and a[q][e] != 'B' and a[q][e] != 'R';){

       a[q][e] = '.';

       q++;

       e--;

   }

}

int main(){

   for(int i = 0; i < 8; i++){

       for(int j = 0; j < 8; j++){

           cin >> a[i][j];

       }

   }

   for(int i = 0; i < 8; i++){

       for(int j = 0; j < 8; j++){

           if(a[i][j] == 'R'){

               R(i, j);

           }

           if(a[i][j] == 'B'){

               B(i, j);

           }

       }

   }

   int k = 0;

   for(int i = 0; i < 8; i++){

       for(int j = 0; j < 8; j++){

           if(a[i][j] == '*'){

               k++;

           }

       }

   }

   cout << k;

   return 0;

}

Объяснение:

Похожие вопросы