C++の配列から4つの辺を選択することによる最大面積の長方形
長方形の面積は、その辺の積として計算されます。すべての長方形には、反対側が等しくなるように4つの辺があります。面積を計算するには、2辺として長さと幅が必要です。希望する結果が得られるように-
面積の長方形=長さX幅
入力
Arr[] = { 1,2,1,3,4,4,2,3,5,7 }.
出力 −配列から4つの辺を選択することによる最大面積の長方形− 12
説明 −与えられた配列を降順でソートすると、
Arr[]= { 7,5,4,4,3,3,2,1,1 }
ここで最大となる2組の辺(合計4辺)は{(4,4)、(3,3)}です。したがって、可能な最大面積は12平方ユニットです。
入力
Arr[] = { 8,2,5,3,4,9,8,3,5,7 }.
出力 −配列から4つの辺を選択することによる最大面積の長方形− 40
説明 −与えられた配列を降順でソートすると、
Arr[]= { 9,8,8,7,5,5,4,3,3,2 }
ここで最大となる2組の辺(合計4辺)は{(8,8)、(5,5)}です。したがって、可能な最大面積は40平方ユニットです。
以下のプログラムで使用されているアプローチは次のとおりです
-
長方形の辺のペアを含む整数の配列を宣言します。(Arr [])
-
配列のサイズを格納する変数を作成します。 (n)
-
関数maxArea(int arr []、int n)は、長方形の最大面積を計算するために使用されます。入力配列とそのサイズを引数として取ります。
-
maxArea()内で、配列Dim [2]を宣言しました。ソートされた配列を(降順で)トラバースした後に見つかった2つのストアの上位2つの辺arr[]。
-
arr []は降順でソートされるため、上位4辺が先頭にある必要があります。一対の辺が見つかるようにarr[]を繰り返します。
-
最初は0でDim[]を初期化します。
-
whileループ内で、dim[0]とdim[1]の値が見つからない、またはarr[]の終わりに達するj<2まで継続するという条件を設定します。 (i
-
そのような辺のペアが見つかった場合(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
-
C++の長方形エリアII
(軸に沿った)長方形のリストがあるとします。ここで、各rectangle [i] ={x1、y1、x2、y2}です。ここで、(x1、y1)は左下隅のポイントであり、(x2、y2)は右上隅のポイントです。 i番目の長方形。 平面内のすべての長方形でカバーされる総面積を見つける必要があります。答えは非常に大きい可能性があるため、モジュロ10 ^ 9+7を使用できます。 したがって、入力が次のような場合 その場合、出力は6になります。 これを解決するには、次の手順に従います- m =10 ^ 9 + 7 関数add()を定義します。これには、a、b、が必要です。 r
-
C++の長方形領域
2D平面内の2つの直線状の長方形で覆われる総面積を求めたいとします。ここで、各長方形は、図に示すように、左下隅と右上隅によって定義されます。 これを解決するには、次の手順に従います- =HまたはD<=Fの場合、 return(C – A)*(D – B)+(G – E)*(H – F) 配列hを定義し、A、C、E、Gをhに挿入します 配列vを定義し、B、D、F、Hをvに挿入します h配列の並べ替えとv配列の並べ替え temp:=(h [2] – h [1])*(v [2] – v [1]) 合計:=temp 合計:=合計+(C – A