ในปัญหานี้ เราได้รับอาร์เรย์ของจำนวนเต็ม 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