अंक 1 धनात्मक ध्रुव को दर्शाता है जबकि 0 ऋणात्मक ध्रुव को दर्शाता है।
मैग्नेट के दोनों ध्रुव 10 या 01 होंगे। एक समूह उन मैग्नेट से बन सकता है जो एक-दूसरे को आकर्षित करते हैं। अलग-अलग ध्रुव एक-दूसरे की ओर होने वाले मैग्नेट एक ही समूह में होंगे।
यहां, आपको N संख्या के मैग्नेट दिए गए हैं। आपको उनके साथ बनने वाले समूहों की संख्या ढूंढनी है।
जब भी दो अलग-अलग मैग्नेट साथ-साथ होते हैं, तो एक नया समूह बनता है। उस स्थिति में समूहों की संख्या बढ़ाएं।
आइए एक उदाहरण देखते हैं।
इनपुट
magnets = ["10", "01", "01", "01", "10", "01"]
आउटपुट
4
दिए गए सरणी में 4 मैग्नेट हैं जो साथ-साथ एक-दूसरे को आकर्षित करते हैं। वे हैं "10", "01", "10", "01"।
एल्गोरिदम
- मैग्नेट के साथ सरणी को आरंभ करें।
- काउंट को 1 पर आरंभ करें क्योंकि हम जोड़े ले रहे हैं।
- एक लूप लिखें जो 1 इंडेक्स से सरणी के अंत तक पुनरावृति करता है।
- यदि वर्तमान मैग्नेट पिछले वाले के बराबर नहीं है, तो काउंट बढ़ाएं।
- काउंट लौटाएं।
कार्यान्वयन
उपरोक्त एल्गोरिदम का C++ में कार्यान्वयन निम्नलिखित है:
#include <bits/stdc++.h> using namespace std; int getMangetGroupsCount(string magnets[], int n) { int count = 1; for (int i = 1; i < n; i++) { if (magnets[i] != magnets[i - 1]) { count++; } } return count; } int main() { string magnets[] = { "10", "01", "01", "01", "10", "01" }; int n = 6; cout << getMangetGroupsCount(magnets, n) << endl; return 0; }आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।
4