通过在C ++中从数组中选取四个边来最大面积矩形

矩形的面积以其边的乘积计算。所有矩形都具有四个边,使得相对边相等。为了计算面积,我们需要长度和宽度为两个边。这样我们才能获得理想的结果-

面积矩形=长度X宽度

我们给了一个数组,它由一个矩形的边组成。该数组以随机顺序包含所有四个边的值。此处的任务是从数组中找到两个最高的边对,以获取矩形可能的最大面积。

输入值 

Arr[] = { 1,2,1,3,4,4,2,3,5,7 }.

输出-通过从数组中选取四个边来最大面积矩形-12

解释-如果我们按降序对给定的数组进行排序,则会得到:

Arr[]= { 7,5,4,4,3,3,2,1,1 }

这里最大的两对边(总共四个边)是{(4,4),(3,3)}。因此,所需的最大可能面积为12平方英尺。

输入值 

Arr[] = { 8,2,5,3,4,9,8,3,5,7 }.

输出-通过从数组中选取四个边来最大面积矩形-40

解释-如果我们按降序对给定的数组进行排序,则会得到:

Arr[]= { 9,8,8,7,5,5,4,3,3,2 }

这里最大的两对边(总共四个边)是{(8,8),(5,5)}。因此,所需的最大可能面积为40平方英尺。

以下程序中使用的方法如下

  • 声明一个整数数组,其中包含成对的矩形边。(Arr [])

  • 创建一个变量来存储数组的大小。(n)

  • 函数maxArea(int arr [],int n)用于计算矩形的最大面积。它以输入数组及其大小作为参数。

  • 在maxArea()内部,我们声明了一个数组Dim [2],该数组存储了遍历排序后的数组arr []后发现的最高的两个边。

  • 由于arr []以降序排列,因此最高的4边必须在开头。我们迭代arr []以便找到一对边。

  • 首先用0初始化Dim []。

  • 在while循环内,我们将条件一直持续到j <2,直到找不到dim [0]和dim [1]的值或到达arr []的末尾。(i <n)。

  • 如果找到一对这样的边(if(arr [i] == arr [i + 1])),则将其存储在dim [j]中,并递增j用于下一边。

  • 返回结果为dim [0]和dim [1]的乘积。

  • 注意-sort(arr,n)应该按降序对arr进行排序。

示例

#include <iostream>
using namespace std;
// function for finding max area for rectangle
int maxArea(int arr[], int n){
   int dim[2]={0};
   int i=0,j=0;
   while( j<2 && i<n){
      if(arr[i]==arr[i+1]){
         dim[j++]=arr[i];
      }
      ++i;
   }
   return dim[0]*dim[1];
}
// driver function
int main(){
   int arr[] = { 1,8,5,1,8,2,5,3 };
   int n = 8;
   sort(arr,n); // supposed to sort array in descending order
   cout <<”Maximum area of rectangle by picking four sides from array:”<< maxArea(arr, n);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Maximum area of rectangle by picking four sides from array: 40