크기가 높이 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) ]
입력 - 길이=2 너비=3
출력 − 주어진 크기의 직사각형 안에 가능한 마름모의 개수는 다음과 같습니다. 2
설명 − 아래 그림은 높이=2 너비=3인 직사각형입니다. 또한 내부에 두 개의 마름모가 보입니다.
아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.
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