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

C++에서 N 컷의 최대 조각 수


주어진 작업은 주어진 정사각형 조각을 가로 또는 세로로 총 N번 잘라서 얻을 수 있는 동일한 크기의 정사각형 또는 직사각형 조각의 최대 수를 계산하는 것입니다.

이제 예제를 사용하여 무엇을 해야 하는지 이해합시다 -

입력 - N=8

출력 − 25

설명 − N=8일 때 세로 컷 수 =4, 가로 컷 수 =4.

총 조각 =25

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

입력 - 7

출력 − 20

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20

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

  • N이 절단 수이고 결과 조각을 최대화해야 하는 경우 동일한 수의 수평 및 수직 절단이 이루어져야 합니다.

    N이 짝수이면 수평 및 수직 절단이 동일하고 N이 홀수이면 수평 절단이 수직 절단보다 1 더 많거나 그 반대의 경우도 마찬가지입니다.

    따라서 가로 =N/2 및 세로 절단 =N-H.

  • MaxPieces() 함수에서 int 유형의 변수 H =N/2를 초기화하여 수평 절단 수를 저장합니다.

  • 수직 절단 수를 저장하기 위해 int 유형의 다른 변수 V=N-H를 초기화합니다.

  • 최종 조각 수 =(가로 행)*(세로 행) =(H+1)*(V+1)

예시

#include <bits/stdc++.h>
using namespace std;
int MaxPieces(int N){
   //H is the number of horizontal cuts
   int H = N / 2;
   //V is the number of vertical cuts
   int V = N-H;
   // maximum number of pieces = (H+1)*(V+1)
   return ((H + 1) * (V + 1));
}
//Main function
int main(){
   //Number of cuts
   int N = 7;
   cout << "Max pieces = "<<MaxPieces(N);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

20