Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm người thắng cuộc bầu cử khi phiếu bầu là tên ứng viên trong C++


Trong hướng dẫn này, ta sẽ viết chương trình tìm người thắng cử. Ta có mảng phiếu bầu mà mỗi ứng viên nhận được. Hãy xem 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 và B nhận được số phiếu bằng nhau. Trong trường hợp này, người thắng được chọn dựa trên thứ tự bảng chữ cái của tên.

Hãy xem các bước giải quyết.

  • Khởi tạo mảng chuỗi với dữ liệu mẫu.
  • Khởi tạo map với key là string và value là int.
  • Duyệt mảng phiếu bầu và đếm phiếu cho mỗi ứng viên. Dùng map lưu số phiếu.
  • Sau khi có số phiếu, duyệt map để tìm key có số phiếu lớn nhất.
  • Nếu hai ứng viên bằng phiếu, so sánh tên theo thứ tự bảng chữ cái.
  • In người thắng cử.

Ví dụ

Xem mã dưới đây:

#include "bits/stdc++.h" using namespace std; void findElectionWinner(string votes[], int total_votes) {    map<string, int> candidate_votes_count;    // đếm phiếu cho mỗi người    for (int i = 0; i < total_votes; i++) {       candidate_votes_count[votes[i]]++;    }    // tìm người thắng    int max_votes = 0;    string election_winner;    for (auto& entry : candidate_votes_count) {       string key = entry.first;       int val = entry.second;       // kiểm tra phiếu với max_votes       if (val > max_votes) {          // cập nhật max_votes và ứng viên          max_votes = val;          election_winner = key;          // so sánh tên nếu phiếu bằng nhau       }       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 thực thi 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ó thắc mắc, hãy đề cập trong phần bình luận.