Bài viết: 28 



Link bài:
Thuật toán:
Code:
Thuật toán:
- Ta duyệt các ô trống, nếu ô đó chưa kiểm soát thì ta đánh dấu lại.
- Quân xe sẽ kiểm soát các ô từ dòng 1-8 của cột xc và các ô từ cột 1-8 của dòng xd.
- Quân tượng sẽ kiểm soát các đường chéo tỏa ra 4 hướng.
Code:
Mã:
#include <bits/stdc++.h>
using namespace std;
int bc[70][70];
int xd, xc, td, tc, ans;
void runfor(int position_x, int position_y, int direction_x, int direction_y){
int a = position_x; int b = position_y;
while(a <= 8 && a > 0 && b <= 8 && b > 0){
if (bc[a][b] == 0){
bc[a][b] = 1;
ans++;
}
a += direction_x; b += direction_y;
}
}
void read(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//freopen("BACO.INP", "r", stdin);
//freopen("BACO.OUT", "w", stdout);
cin >> xd >> xc >> td >> tc;
}
void run(){
for(int i = 1; i <= 8; i++){
if (bc[i][xc] == 0){
bc[i][xc] = 1;
ans++;
}
if (bc[xd][i] == 0){
bc[xd][i] = 1;
ans++;
}
}
runfor(td, tc, 1, 1);
runfor(td, tc, 1, -1);
runfor(td, tc, -1, -1);
runfor(td, tc, -1, 1);
cout << ans;
}
int main(){
read();
run();
return 0;
}