用C ++构造矩形

假设我们有一个特定的矩形网页区域,我们的工作是设计一个矩形网页,其长度L和宽度W满足以下要求-

  • 网页的面积必须等于给定的目标面积。

  • 宽度W不应大于长度L,并且L> =W。

  • L和W之间的差异应尽可能小。

因此,如果输入像4,那么输出将是[2,2],因为目标区域是4,构造它的所有可能方式是[1,4],[2,2],[4 ,1]。根据要求,此处为2,[1,4]是非法的;根据要求3,与[2,2]相比,[4,1]是不合适的。因此,长度L为2,宽度W为2。

为了解决这个问题,我们将遵循以下步骤-

  • 对于初始化i:=面积的平方根,当i> 0时,更新(将i减1),执行-

    • 定义数组v,插入{area / i,i}

    • 返回v

    • 如果面积模i与0相同,则-

    • 返回{-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, ]