华为机试HJ94:记票统计

简介: 华为机试HJ94:记票统计

题目描述:

请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。

本题有多组样例输入。

输入描述:

输入候选人的人数n,第二行输入n个候选人的名字(均为大写字母的字符串),第三行输入投票人的人数,第四行输入投票。

输出描述:

按照输入的顺序,每行输出候选人的名字和得票数量,最后一行输出不合法的票数。

示例:

输入:

4

A B C D

8

A D E CF A GG A B


输出:

A : 3

B : 1

C : 0

D : 1

Invalid : 3

解题思路:

这题是个容器考察题。用vector存放候选人名字,用hash map容器flags存放候选人标志符,用values存放候选人票数;当进行投票时,判断下flags[vote]是否为true,若是则为候选人,有效票所以票数+1,若不是则无效票计数+1;最后按顺序输出vector即可。


这道题因为输出顺序与开始的候选人顺序一致,所以用vector来做好一些,如果要求输出结果按字母排序,最好用map,因为可以自动实现排序。

测试代码:

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <algorithm>
using namespace std;
int main()
{
    int number;
    while(cin>>number)
    {
        vector<string> m(number);
        unordered_map<string, bool> flags(number);
        unordered_map<string, int> values(number);
        for(int i=0;i<number;++i)
        {
            string candidate;
            cin>>candidate;
            m[i]=candidate;
            flags[candidate]=true;
        }
        int n;
        cin>>n;
        int invalid=0;
        for(int j=0;j<n;++j)
        {
            string vote;
            cin>>vote;
            if(flags[vote]==true)
            {
                values[vote]++;
            }
            else{
                invalid++;
            }
        }
        for(int j=0;j<number;++j)
        {
            cout<<m[j]<<" : "<<values[m[j]]<<endl;
        }
        cout<<"Invalid : "<<invalid<<endl;
    }
    return 0;
}
相关文章
|
SQL 监控 NoSQL
架构师第一课,一文带你玩转 ruoyi 架构
我理解的架构/框架应该有以下功能: 1.满足日常开发功能,如单点登陆、消息队列、监控等; 2.规范开发者的开发,指定代码格式、注释等; 3.提高开发效率,提供一系列的封装方法,并减少bug的产生率。 下文将详细介绍ruoyi框架。
8166 1
架构师第一课,一文带你玩转 ruoyi 架构
|
前端开发 JavaScript 关系型数据库
若依框架------后台路由数据是如何转换为前端路由信息的
若依框架------后台路由数据是如何转换为前端路由信息的
1636 0
|
XML JSON 前端开发
bpmn.js 使用常见问题(不定时持续更新)
bpmn.js 使用常见问题(不定时持续更新)
6545 2
|
监控 安全 JavaScript
对跨站脚本攻击(XSS)的防御策略?
【8月更文挑战第15天】
1173 1
|
存储 JSON 资源调度
vue3怎么使用i18n
vue3怎么使用i18n
645 5
|
存储 NoSQL Java
Spring boot 整合 Elasticsearch
前面学习了 Elasticsearch 的简单基本操作,例如安装,基本的操作命令等,今天就来看看 es 和 Spring boot 的简单整合,实现增删改查的功能。众所周知,Spring boot 支持多种 NoSql 数据库,例如 redis、mongodb,elasticsearch 也是其中的一种。并且实现了 Spring boot 一贯的自动化配置,使用起来也是十分方便的。
1019 0
Spring boot 整合 Elasticsearch
|
Kubernetes jenkins 持续交付
从代码到部署微服务实战(一)
从代码到部署微服务实战(一)
|
消息中间件 存储 Java
消息中间件第一讲:RocketMQ从入门到精通
消息中间件第一讲:RocketMQ从入门到精通
1292 2
|
JavaScript 前端开发 API
Bpmn.js 中文文档 之 Overlays
Bpmn.js 中文文档 之 Overlays
1530 1
|
算法 C语言
【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
2067 1