Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm người chiến thắng trong một cuộc bầu cử mà phiếu bầu được thể hiện dưới dạng tên ứng cử viên trong C ++

Trong hướng dẫn này, chúng tôi sẽ viết một chương trình tìm người chiến thắng trong cuộc bầu cử. Chúng tôi sẽ có một loạt phiếu bầu mà mỗi ứng cử viên có được trong cuộc bầu cử. Hãy xem một ví dụ.

Đầu vào

{"A", "B", "C", "B", "A", "C", "D", "D", "A", "B", "D", "B", "A", "C", "D"}

Đầu ra

A

Đây, A B có cùng số phiếu bầu. Trong trường hợp đó, chúng tôi phải chọn người chiến thắng dựa trên thứ tự bảng chữ cái tên của họ.

Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo một mảng chuỗi với dữ liệu giả.

  • Khởi tạo bản đồ với chuỗi là key và int là giá trị .

  • Lặp lại mảng phiếu bầu và đếm phiếu bầu của từng thành viên. Sử dụng bản đồ để lưu trữ số phiếu bầu.

  • Chúng tôi có số phiếu bầu với chúng tôi. Để tìm người chiến thắng trong cuộc bầu cử, hãy lướt qua bản đồ và tìm chìa khóa có số phiếu bầu tối đa.

  • Nếu hai thành viên có cùng phiếu bầu, hãy kiểm tra tên của họ.

  • In người chiến thắng.

Ví dụ

Hãy xem mã.

#include "bits/stdc++.h"
using namespace std;
void findElectionWinner(string votes[], int total_votes) {
   map<string, int> candidate_votes_count;
   // counting each person votes
   for (int i = 0; i < total_votes; i++) {
      candidate_votes_count[votes[i]]++;
   }
   // finding winner
   int max_votes = 0;
   string election_winner;
   for (auto& entry : candidate_votes_count) {
      string key = entry.first;
      int val = entry.second;
      // checking the votes with max votes
      if (val > max_votes) {
         // updating max votes and member
         max_votes = val;
         election_winner = key;
         // comparing the name if the votes are equal
      }
      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;
}

Đầu ra

Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.

A

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.