ในปัญหานี้ เราได้รับอาร์เรย์ของจำนวนเต็ม N ซึ่งแสดงถึงความยาวของแท่ง n งานของเราคือพิมพ์จำนวนสี่เหลี่ยมและสี่เหลี่ยมที่สามารถสร้างได้จากแท่งที่มีความยาวที่กำหนด
มาดูตัวอย่างทำความเข้าใจปัญหากัน
ป้อนข้อมูล − อาร์เรย์ ={5, 5, 7, 7, 1, 4}
ผลลัพธ์ − 1
คำอธิบาย − สี่เหลี่ยมที่มีด้าน 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