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

C++에서 사각형 생성


특정 직사각형 웹 페이지 영역이 있다고 가정하고 다음 요구 사항을 충족하는 길이 L과 너비 W인 직사각형 웹 페이지를 디자인하는 것이 우리의 임무입니다.

  • 웹 페이지의 영역은 지정된 대상 영역과 같아야 합니다.

  • 너비 W는 길이 L보다 크지 않아야 하며 L>=W입니다.

  • L과 W의 차이는 가능한 한 작아야 합니다.

따라서 입력이 4와 같으면 대상 영역이 4이므로 출력은 [2,2]가 되고 구성할 수 있는 모든 방법은 [1,4], [2,2], [4 ,1]. 여기에서 요구 사항에 따라 2, [1,4]는 불법입니다. 요구 사항 3에 따르면 [4,1]은 [2,2]에 비해 적절하지 않습니다. 따라서 길이 L은 2이고 너비 W는 2입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 초기화 i :=면적의 제곱근의 경우, i> 0일 때 업데이트(i를 1만큼 감소), 수행 -

    • 면적 mod i가 0과 같으면 -

      • 배열 v 정의, {area/i, i}

        삽입
      • 리턴 v

  • 반환 {-1, -1}

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<int> constructRectangle(int area) {
      for (int i = sqrt(area); i > 0; i--) {
         if (area % i == 0) {
            vector<int> v{ area / i, i };
            return v;
         }
      }
      return { -1, -1 };
   }
};
main(){
   Solution ob;
   print_vector(ob.constructRectangle(4));
}

입력

4

출력

[2, 2, ]