Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 한 번에 Bishop이 방문할 수 있는 총 사각형 수를 계산합니다.


8 X 8 그리드로 표시되는 체스판에서 행 및 열 위치의 형태로 비숍의 위치가 제공됩니다. 목표는 Bishop이 한 번에 방문할 수 있는 총 사각형 수를 찾는 것입니다. 우리는 Bishop이 모든 방향(대각선 왼쪽 위/아래 및 오른쪽 위/아래)으로 이동할 수 있다는 것을 알고 있습니다.

C++에서 한 번에 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