इस समस्या में, हमें 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