इस समस्या में, हमें 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 << "बनाए जा सकने वाले वर्ग या आयतों की कुल संख्या है ";
cout << countRecSqr(sticks, n);
return 0;
}
आउटपुट
बनाए जा सकने वाले वर्ग या आयतों की कुल संख्या है 3