给定两个相同矩形的长度L和宽度B ,任务是找到正方形的最小面积,在其中可以嵌入尺寸为L×B的两个相同矩形。
例子:
Input: L = 7, B = 4
Output: 64
Explanation: Two rectangles with sides 7 x 4 can fit into square with side 8. By placing two rectangles with side 4 upon each other and the length of contact is 7.
Input: L = 1, B = 3
Output: 9
Explanation: Two rectangles with sides 1 x 3 can fit into square with side 3. By placing two rectangles with side 1 upon each other and a gap of 1 between the 2 rectangles.
方法:
- 如果矩形的一侧小于或等于另一侧的一半,则正方形的一侧为矩形的较长侧。
- 如果较小边的长度的两倍大于较大边的长度,则正方形的边是矩形较小边的长度的两倍。
下面是上述方法的实现:
C++
// C++ program for the above problem
#include
using namespace std;
// Function to find the
// area of the square
int areaSquare(int L, int B)
{
// Larger side of rectangle
int large = max(L, B);
// Smaller side of the rectangle
int small = min(L, B);
if (large >= 2 * small)
return large * large;
else
return (2 * small) * (2 * small);
}
// Driver code
int main()
{
int L = 7;
int B = 4;
cout << areaSquare(L, B);
return 0;
}
Java
// Java implementation of the above approach
import java.io.*;
class GFG{
// Function to find the
// area of the square
static int areaSquare(int L, int B)
{
// Larger side of rectangle
int large = Math.max(L, B);
// Smaller side of the rectangle
int small = Math.min(L, B);
if (large >= 2 * small)
{
return large * large;
}
else
{
return (2 * small) * (2 * small);
}
}
// Driver code
public static void main(String[] args)
{
int L = 7;
int B = 4;
System.out.println(areaSquare(L, B));
}
}
// This code is contributed by offbeat
Python3
# Python3 program for the above problem
# Function to find the
# area of the square
def areaSquare(L, B):
# Larger side of rectangle
large = max(L, B)
# Smaller side of the rectangle
small = min(L, B)
if(large >= 2 * small):
return large * large
else:
return (2 * small) * (2 * small)
# Driver code
if __name__ == '__main__':
L = 7
B = 4
print(areaSquare(L, B))
# This code is contributed by Shivam Singh
C#
// C# program for the above problem
using System;
class GFG{
// Function to find the
// area of the square
public static int areaSquare(int L, int B)
{
// Larger side of rectangle
int large = Math.Max(L, B);
// Smaller side of the rectangle
int small = Math.Min(L, B);
if (large >= 2 * small)
{
return large * large;
}
else
{
return (2 * small) * (2 * small);
}
}
// Driver code
public static void Main()
{
int L = 7;
int B = 4;
Console.Write(areaSquare(L, B));
}
}
// This code is contributed by Code_Mech
输出:
64
时间复杂度: O(1)
辅助空间复杂度: O(1)