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[],以便找到一对边。
首先将 Dim[] 初始化为 0。
在 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
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP