HJ94 记票统计

知识点查找哈希

描述

某场选举一共有 n 位候选人入选,候选人的名字均由大写字母构成,且互不相同,使用 c1,c2,...,cn表示。

选举结束后,统计了 m 张选票,每张选票上均写有候选人的名字,使用 v1,v2,...,vm 表示。

求解每个候选人获得的票数。特别地,如果某张选票上的候选人名字不在候选名单中,则该票视为无效票。你需要同时统计无效票的数量。

输入描述:

第一行输入一个整数 n(1≦n≦100)代表候选人数。

第二行输入 n 个长度为 1≦len(ci)≦10、仅由大写字母构成的字符串 c1,c2,...,cn,代表候选人的名字。保证候选人的名字互不相同。

第三行输入一个整数 m(1≦m≦100)代表投票人数。

第四行输入 m 个长度为 1≦len(vi)≦10、仅由大写字母构成的字符串 v1,v2,...,vm,代表投票内容。

输出描述:

对于每一位候选人,新起一行。先输出其名字,随后输出一个空格、一个冒号、一个空格作为间隔,最后输出其获得的票数。形如 ci : numbersi​,其中 ci 是候选人的名字,numbersi​ 是候选人的票数。

最后一行以相同的格式输出无效票的数量。形如 Invalid : numbers,其中 numbers 是无效票的数量。

示例1

输入:

复制代码
4
A B C D
8
A D E CF A GG A B

输出:

复制代码
A : 3
B : 1
C : 0
D : 1
Invalid : 3

说明:

复制代码
在这个样例中,E,CF,GG三张票是无效的。
cpp 复制代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main(){
    int n;
    while(cin >> n){
        vector<pair<string, int> > name(n);
        string s;
        for(int i = 0; i < n; i++){ 
            cin >> s;
            name[i] = make_pair(s, 0); //记录候选人的名字,初始票数为0
        }
        cin >> n;
        for(int i = 0; i < n; i++){ 
            cin >> s;
            for(int i = 0; i < name.size(); i++) //只查找到有这个候选人的再计票
                if(s == name[i].first)
                    name[i].second++;
        }
        int valid = 0; //统计合法票数
        for(int i = 0; i < name.size(); i++){ //遍历候选人的名字,输出其票数
            cout << name[i].first << " : " << name[i].second << endl;
            valid += name[i].second;
        }
        cout << "Invalid : " << n - valid << endl; //总票数减去合法票数就是非法票数
    }
}
相关推荐
未来之窗软件服务3 分钟前
SenseVoicecpp ggml-hexagon.cpp大模型[AI人工智能(七十九)]—东方仙盟
人工智能·算法·仙盟创梦ide·东方仙盟
xiaoye-duck4 分钟前
《算法题讲解指南:动态规划算法--子数组系列》--25.单词拆分,26.环绕字符串中唯一的子字符串
c++·算法·动态规划
Fcy6488 分钟前
算法基础详解(二)枚举算法——普通枚举与二进制枚举
算法·枚举算法
承渊政道23 分钟前
【优选算法】(实战:栈、队列、优先级队列高频考题通关全解)
数据结构·c++·笔记·学习·算法·leetcode·宽度优先
py有趣25 分钟前
力扣热门100题之将有序数组转为二叉搜索树
算法·leetcode
天若有情67328 分钟前
Python精神折磨系列(完整11集·无断层版)
数据库·python·算法
凌波粒30 分钟前
LeetCode--383.赎金信(哈希表)
java·算法·leetcode·散列表
liulilittle35 分钟前
OPENPPP2 1.0.0.26145 正式版发布:内核态 SYSNAT 性能飞跃 + Windows 平台避坑指南
开发语言·网络·c++·windows·通信·vrrp
AIminminHu41 分钟前
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(2):当你的CAD代码变得“又大又乱”:从手动编译到CMake,从随性编码到单元测试))
c++·单元测试·cmake·cad·cad开发
xiaoye-duck1 小时前
《算法题讲解指南:动态规划算法--子数组系列》--23.等差数列划分,24.最长湍流子数组
c++·算法·动态规划