परिचय
इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो चुनाव विजेता ढूंढता है। हमारे पास एक सरणी होगी जिसमें प्रत्येक उम्मीदवार को मिले वोट होंगे। आइए एक उदाहरण देखते हैं।
इनपुट
{"A", "B", "C", "B", "A", "C", "D", "D", "A", "B", "D", "B", "A", "C", "D"}
आउटपुट
A
यहां, A और B को समान संख्या में वोट मिले। उस स्थिति में, हमें उनके नामों के वर्णमाला क्रम के आधार पर विजेता का चयन करना होगा।
समस्या समाधान के चरण
- स्ट्रिंग सरणी को डमी डेटा के साथ इनिशियलाइज़ करें।
- स्ट्रिंग को की और इंट को वैल्यू के साथ एक मैप इनिशियलाइज़ करें।
- वोट सरणी पर पुनरावृत्ति करें और प्रत्येक सदस्य के वोट गिनें। वोट काउंट स्टोर करने के लिए मैप का उपयोग करें।
- हमारे पास वोट काउंट है। चुनाव विजेता ढूंढने के लिए, मैप पर पुनरावृत्ति करें और अधिकतम वोट वाली की ढूंढें।
- यदि दो सदस्यों को समान वोट मिले, तो उनके नामों की जांच करें।
- विजेता प्रिंट करें।
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
void findElectionWinner(string votes[], int total_votes) {
map<string, int> candidate_votes_count;
// प्रत्येक व्यक्ति के वोट गिनना
for (int i = 0; i < total_votes; i++) {
candidate_votes_count[votes[i]]++;
}
// विजेता ढूंढना
int max_votes = 0;
string election_winner;
for (auto& entry : candidate_votes_count) {
string key = entry.first;
int val = entry.second;
// वोट की तुलना अधिकतम वोट से
if (val > max_votes) {
// अधिकतम वोट और सदस्य अपडेट करना
max_votes = val;
election_winner = key;
}
// यदि वोट समान हैं तो नाम की तुलना
else if (val == max_votes && election_winner > key) {
election_winner = key;
}
}
cout << election_winner << endl;
}
int main() {
string votes[] = {"A", "B", "C", "B", "A", "C", "D", "D", "A", "B", "D", "B", "A"};
findElectionWinner(votes, 13);
return 0;
}
आउटपुट
A
व्याख्या
A को 4 वोट मिले, B को 4 वोट मिले, C को 3, D को 2। टाई होने पर वर्णमाला क्रम में पहले आने वाला (A) विजेता होता है।
निष्कर्ष
मैप का उपयोग करके वोट गिनना O(n log n) समय में होता है। अनऑर्डर्ड_मैप का उपयोग करके इसे O(n) में किया जा सकता है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।