Слоны и ладьи
На шахматной доске расположены несколько слонов и ладей. По условным буквенным обозначениям фигур и их координатам определите, сколько свободных полей шахматной доски не находятся под боем ни одной из этих фигур.
Входные данные
Шахматная доска описывается в восьми строках входных данных. Первые восемь символов каждой из этих строк описывают состояние соответствующей горизонтали: символ B (заглавная латинская буква) означает, что в клетке стоит слон, символ R — ладья, символ * — что клетка пуста.
Выходные данные
Выведите количество пустых клеток, которые не бьет ни одна из фигур.
Примеры
Ввод
Вывод
********
********
*R******
********
********
********
********
**Помогите написать программу на python или с++!!!!!
Ответы
Ответ:
#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;
}
Объяснение: