8 X 8 그리드로 표시되는 체스판에서 행 및 열 위치의 형태로 비숍의 위치가 제공됩니다. 목표는 Bishop이 한 번에 방문할 수 있는 총 사각형 수를 찾는 것입니다. 우리는 Bishop이 모든 방향(대각선 왼쪽 위/아래 및 오른쪽 위/아래)으로 이동할 수 있다는 것을 알고 있습니다.
예를 들어
입력
row = 5, column = 4
출력
Count of total number of squares that can be visited by Bishop in one move are: 13
설명
As shown in above figure the squares that Bishop can cover are 9.
입력
row = 1, column = 1
출력
Count of total number of squares that can be visited by Bishop in one move are: 7
설명
As this is the corner most position, then Bishop can only cover one diagonal which can have a maximum of 7 squares.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -
이 접근 방식에서는 수평 및 수직 최대 및 최소 정사각형 위치를 사용하여 대각선 정사각형을 계산합니다.
-
주교의 위치에 대해 행과 열을 정수로 취하십시오.
-
squares_visited(int first, int second) 함수는 Bishop의 위치를 차지하고 한 번에 방문할 수 있는 사각형의 수를 반환합니다.
-
초기 카운트를 0으로 합니다.
-
왼쪽 위치의 최소값은 행 또는 열 위치의 최소값 -1입니다.
-
왼쪽 위치의 최대값은 8 - 행의 최대값 또는 9 - 열 위치입니다.
-
오른쪽 위치의 최소값은 행 또는 9열 위치 -1의 최소값입니다.
-
오른쪽 위치의 최대값은 8 - 행 또는 열 위치의 최대값입니다.
-
총 제곱은 위에서 계산한 위치의 합이 됩니다.
-
결과로 카운트를 반환합니다.
예
#include <bits/stdc++.h> using namespace std; int squares_visited(int first, int second){ int count = 0; int min_left = min(first, second) − 1; int max_left = 8 − max(first, 9 − second); int max_right = 8 − max(first, second); int min_right = min(first, 9 − second) − 1; count = min_left + min_right + max_right + max_left; return count; } int main(){ int row = 3, column = 3; cout<<"Count of total number of squares that can be visited by Bishop in one move are: "<<squares_visited(row, column); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
Count of total number of squares that can be visited by Bishop in one move are: 11