📌  相关文章
📜  给定元素集的矩形和正方形的可能数量

📅  最后修改于: 2021-05-31 16:58:16             🧑  作者: Mango

给定‘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

方法:以下是解决此问题的分步算法:

  1. 初始化摇杆数量。
  2. 用数组的长度初始化所有棍子。
  3. 以升序对数组进行排序。
  4. 计算相同长度的成对棍棒的数量。
  5. 将对的总数除以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等的更多准备工作,请参阅“完整面试准备课程”