Computer >> Máy Tính >  >> Lập trình >> C ++

Xây dựng hình chữ nhật trong C ++


Giả sử chúng ta có một vùng trang web hình chữ nhật cụ thể, công việc của chúng ta là thiết kế một trang web hình chữ nhật, có chiều dài L và chiều rộng W đáp ứng các yêu cầu sau -

  • Diện tích của trang web phải bằng vùng mục tiêu đã cho.

  • Chiều rộng W không được lớn hơn chiều dài L và L> =W.

  • Chênh lệch giữa L và W phải càng nhỏ càng tốt.

Vì vậy, nếu đầu vào là 4, thì đầu ra sẽ là [2,2], vì vùng mục tiêu là 4 và tất cả các cách có thể để xây dựng nó là [1,4], [2,2], [4 , 1]. Ở đây theo yêu cầu, nó là 2, [1,4] là bất hợp pháp; theo yêu cầu 3, [4,1] không đúng so với [2,2]. Vậy chiều dài L là 2 và chiều rộng W là 2.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • để khởi tạo i:=căn bậc hai của diện tích, khi i> 0, cập nhật (giảm i đi 1), thực hiện -

    • nếu vùng mod i giống 0, thì -

      • Xác định một mảng v, chèn {area / i, i}

      • trở lại v

  • trả về {-1, -1}

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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));
}

Đầu vào

4

Đầu ra

[2, 2, ]