题目描述 输入一组选票,共30个,取值为A,B或者C,分别对应着1,2,3三位候选人,统计三个人的得票数,最多的当选为总统,并输出其编号,如果票数最多的人有两个,或者三个人票数相同,则输出no result (输出结果后面没有空格或者回车换行) 输入格式 30个投票结果,中间有一个空格间隔。 输出格式 票数最多人的编号(如果三人票数相同或者票数最多的有2个人,则输出no result) 样例 样例输入 A A A A A A A A A A B B B B B B B B B B C C C C C C C C C C 样例输出 no result 数据范围与提示 so easy 使用c++
时间: 2024-04-22 18:25:06 浏览: 51
我明白了,以下是解决问题的C++代码:
```cpp
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
map<char, int> voteCount;
voteCount['A'] = 0;
voteCount['B'] = 0;
voteCount['C'] = 0;
vector<char> votes;
for (int i = 0; i < 30; i++) {
char vote;
cin >> vote;
votes.push_back(vote);
voteCount[vote]++;
}
int maxVotes = 0;
char maxCandidate = ' ';
bool isNoResult = false;
for (auto it = voteCount.begin(); it != voteCount.end(); it++) {
if (it->second > maxVotes) {
maxVotes = it->second;
maxCandidate = it->first;
isNoResult = false;
} else if (it->second == maxVotes) {
isNoResult = true;
}
}
if (isNoResult || maxVotes == 0) {
cout << "no result";
} else {
cout << maxCandidate - 'A' + 1;
}
return 0;
}
```
这段代码使用了`map`来统计每个候选人的得票数,然后遍历`map`找到得票最多的候选人。如果有两个或更多的候选人得票数相同,或者没有任何候选人得到票,则输出"no result"。否则,输出得票最多的候选人的编号(A对应1,B对应2,C对应3)。
阅读全文