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

C++에서 주어진 크기의 직사각형 안에 가능한 마름모의 수를 센다.

<시간/>

크기가 높이 X 너비인 직사각형이 제공됩니다. 직사각형은 점 (0,0)에서 왼쪽 아래 모서리를 사용하여 2D 좌표계에 표시됩니다. 따라서 목표는 이 모든 조건이 충족되도록 이 직사각형 내부에 가능한 마름모의 수를 계산하는 것입니다. −

  • 마름모의 면적은 0보다 큽니다.

  • 마름모의 대각선은 x 및 y 축에 평행합니다.

  • 마름모는 모든 모서리에 대해 정수 좌표를 갖습니다.

예를 들어 이해하자

입력 - 길이=3 너비=3

출력 − 주어진 크기의 직사각형 안에 가능한 마름모의 개수는 다음과 같습니다. 4

설명 − 아래 그림은 height=width=3의 직사각형입니다. 또한 면적이>0이고 대각선이 두 축(또한 정수 좌표)에 평행한 4개의 마름모를 볼 수 있습니다. -

First [ (1,0), (2,1), (1,2), (0,1) ]
Second [ (2,0), (3,1), (2,2), (1,1) ]
Third [ (2,1), (3,2), (2,3), (1,2) ]
Fourth [ (1,1), (2,1), (1,2), (0,1) ]

C++에서 주어진 크기의 직사각형 안에 가능한 마름모의 수를 센다.

입력 - 길이=2 너비=3

출력 − 주어진 크기의 직사각형 안에 가능한 마름모의 개수는 다음과 같습니다. 2

설명 − 아래 그림은 높이=2 너비=3인 직사각형입니다. 또한 내부에 두 개의 마름모가 보입니다.

C++에서 주어진 크기의 직사각형 안에 가능한 마름모의 수를 센다.

아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.

0이 아닌 영역과 정수 좌표를 가진 첫 번째 마름모는 (2,2)의 오른쪽 상단 모서리에서 시작합니다. 인덱스 i=j=2에서 i<=length 및 j<=length로 순회를 시작합니다. i와 j를 2만큼 증가시켜 짝수 길이를 고정합니다(정수 좌표의 경우). 이 대각선이 있는 마름모의 수는 (높이-i+1)X(너비-j+1)입니다.

  • 길이와 너비를 정수로 취하십시오.

  • 함수 possible_rhombus(int length, int width)는 직사각형의 크기를 취하고 언급된 모든 조건을 따르는 직사각형 내부의 가능한 마름모 개수를 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • i=2에서 i<=length로, j=2에서 j<=width로 트래버스합니다.

  • 각 i,j에 대해 temp_1=length-i+1 및 temp_2=width-j+1

    을 취합니다.
  • 계산할 temp_1*temp_2를 추가합니다.

  • i와 j를 2만큼 증가시킵니다(정수 좌표의 경우).

  • 결과로 끝에 카운트를 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
long long possible_rhombus(int height, int width){
   long long count = 0;
   for (int i = 2; i <= height; i += 2){
      for (int j = 2; j <= width; j += 2){
         int temp_1 = height - i + 1;
         int temp_2 = width - j + 1;
         count += temp_1 * temp_2;
      }
   }
   return count;
}
int main(){
   int height = 4, width = 4;
   cout<<"Count of number of rhombi possible inside a rectangle of given size are: "<<possible_rhombus(height, width);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

Count of number of rhombi possible inside a rectangle of given size are: 16