给定‘N’个长度为a 1 ,a 2 ,a 3 …a n的木棒。任务是计算可能的正方形和矩形的数量。
注意:一根棍子只能使用一次,即在任何正方形或矩形中都可以使用。
例子:
Input: arr[] = {1, 2, 1, 2}
Output: 1
Rectangle with sides 1 1 2 2
Input: arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}
Output: 0
No square or rectangle is possible
方法:以下是解决此问题的分步算法:
- 初始化摇杆数量。
- 用数组的长度初始化所有棍子。
- 以升序对数组进行排序。
- 计算相同长度的成对棍棒的数量。
- 将对的总数除以2,这将是可能的矩形和正方形的总数。
下面是上述方法的实现:
C++
// C++ implementation of above approach
#include
using namespace std;
// Function to find the possible
// rectangles and squares
int rectangleSquare(int arr[], int n)
{
// sort all the sticks
sort(arr, arr + n);
int count = 0;
// calculate all the pair of
// sticks with same length
for (int i = 0; i < n - 1; i++) {
if (arr[i] == arr[i + 1]) {
count++;
i++;
}
}
// divide the total number of pair
// which will be the number of possible
// rectangle and square
return count / 2;
}
// Driver code
int main()
{
// initialize all the stick lengths
int arr[] = { 2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << rectangleSquare(arr, n);
return 0;
}
Java
// Java implementation of above approach
import java.util.Arrays;
class GFG
{
// Function to find the possible
// rectangles and squares
static int rectangleSquare(int arr[], int n)
{
// sort all the sticks
Arrays.sort(arr);
int count = 0;
// calculate all the pair of
// sticks with same length
for (int i = 0; i < n - 1; i++)
{
if (arr[i] == arr[i + 1])
{
count++;
i++;
}
}
// divide the total number of pair
// which will be the number of possible
// rectangle and square
return count / 2;
}
// Driver code
public static void main(String[] args)
{
// initialize all the stick lengths
int arr[] = {2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9};
int n = arr.length;
System.out.println(rectangleSquare(arr, n));
}
}
// This code is contributed
// by PrinciRaj1992
Python3
# Python3 implementation of above approach
# Function to find the possible
# rectangles and squares
def rectangleSquare( arr, n):
# sort all the sticks
arr.sort()
count = 0
#print(" xx",arr[6])
# calculate all the pair of
# sticks with same length
k=0
for i in range(n-1):
if(k==1):
k=0
continue
if (arr[i] == arr[i + 1]):
count=count+1
k=1
# divide the total number of pair
# which will be the number of possible
# rectangle and square
return count/2
# Driver code
if __name__=='__main__':
# initialize all the stick lengths
arr = [2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9]
n = len(arr)
print(rectangleSquare(arr, n))
# this code is written by ash264
C#
// C# implementation of above approach
using System;
class GFG
{
// Function to find the possible
// rectangles and squares
static int rectangleSquare(int []arr, int n)
{
// sort all the sticks
Array.Sort(arr);
int count = 0;
// calculate all the pair of
// sticks with same length
for (int i = 0; i < n - 1; i++)
{
if (arr[i] == arr[i + 1])
{
count++;
i++;
}
}
// divide the total number of pair
// which will be the number of possible
// rectangle and square
return count / 2;
}
// Driver code
public static void Main(String[] args)
{
// initialize all the stick lengths
int []arr = {2, 2, 4, 4, 4, 4, 6,
6, 6, 7, 7, 9, 9};
int n = arr.Length;
Console.WriteLine(rectangleSquare(arr, n));
}
}
// This code has been contributed
// by Rajput-Ji
PHP
Javascript
输出:
3
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。