Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนสี่เหลี่ยมผืนผ้าและสี่เหลี่ยมจัตุรัสที่เป็นไปได้จากชุดไม้ที่กำหนดใน C++

ในปัญหานี้ เราได้รับอาร์เรย์ของ N จำนวนเต็มที่แทนความยาวของ n ไม้ งานของเราคือพิมพ์จำนวนสี่เหลี่ยมผืนผ้าและสี่เหลี่ยมจัตุรัสที่สามารถสร้างได้จากไม้ที่มีความยาวที่กำหนด

มาดูตัวอย่างเพื่อเข้าใจปัญหา:

Input - array = {5, 5, 7, 7, 1, 4}

Output - 1

Explanation - สี่เหลี่ยมผืนผ้าที่มีด้าน 5 5 7 7

เพื่อแก้ปัญหานี้ เราจะต้องตรวจสอบว่าสี่เหลี่ยมผืนผ้าและสี่เหลี่ยมจัตุรัสเป็นไปได้หรือไม่

ตอนนี้ สำหรับการสร้างสี่เหลี่ยมจัตุรัสหรือสี่เหลี่ยมผืนผ้า ควรมีไม้สอง根ที่มีความยาวเท่ากัน 2 สำหรับสี่เหลี่ยมผืนผ้า และ 4 สำหรับสี่เหลี่ยมจัตุรัส ตอนนี้ ในอาร์เรย์ของเรา เราจะต้องตรวจสอบคู่ของไม้ที่มีความยาวเท่ากัน เพื่อให้การค้นหานี้ง่ายขึ้น เราจะเรียงลำดับอาร์เรย์แล้วหาคู่ และครึ่งหนึ่งของจำนวนคู่ทั้งหมดจะเป็นจำนวนสี่เหลี่ยมจัตุรัสหรือสี่เหลี่ยมผืนผ้าที่สามารถสร้างได้

ตัวอย่าง

โปรแกรมแสดงการนำโซลูชันของเราไปใช้งาน:

#include <bits/stdc++.h>
using namespace std;

int countRecSqr(int sticks[], int n) {
    sort(sticks, sticks + n);
    int pairs = 0;
    for (int i = 0; i < n - 1; i++) {
        if (sticks[i] == sticks[i + 1]) {
            pairs++;
            i++;
        }
    }
    return pairs / 2;
}

int main() {
    int sticks[] = { 2, 2, 4, 4, 4, 4, 6, 6, 6, 7, 7, 9, 9 };
    int n = sizeof(sticks) / sizeof(sticks[0]);
    cout << "The total number of squares or rectangles that can be created is ";
    cout << countRecSqr(sticks, n);
    return 0;
}

ผลลัพธ์

The total number of squares or rectangles that can be created is 3