首页 > 试题广场 >

记票统计

[编程题]记票统计
  • 热度指数:132049 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}某场选举一共有 n 位候选人入选,候选人的名字均由大写字母构成,且互不相同,使用 c_1, c_2, \dots, c_n 表示。
\hspace{15pt}选举结束后,统计了 m 张选票,每张选票上均写有候选人的名字,使用 v_1, v_2, \dots, v_m 表示。
\hspace{15pt}求解每个候选人获得的票数。特别地,如果某张选票上的候选人名字不在候选名单中,则该票视为无效票。你需要同时统计无效票的数量。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 100\right) 代表候选人数。
\hspace{15pt}第二行输入 n 个长度为 1 \leqq {\rm len}(c_i) \leqq 10、仅由大写字母构成的字符串 c_1, c_2, \dots, c_n,代表候选人的名字。保证候选人的名字互不相同。
\hspace{15pt}第三行输入一个整数 m \left(1 \leqq m \leqq 100\right) 代表投票人数。
\hspace{15pt}第四行输入 m 个长度为 1 \leqq {\rm len}(v_i) \leqq 10、仅由大写字母构成的字符串 v_1, v_2, \dots, v_m,代表投票内容。


输出描述:
\hspace{15pt}对于每一位候选人,新起一行。先输出其名字,随后输出一个空格、一个冒号、一个空格作为间隔,最后输出其获得的票数。形如 c_i \texttt{ : } {\rm numbers}_i,其中 c_i 是候选人的名字,{\rm numbers}_i 是候选人的票数。
\hspace{15pt}最后一行以相同的格式输出无效票的数量。形如 \texttt{Invalid : } {\rm numbers},其中 {\rm 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

说明

\hspace{15pt}在这个样例中,\texttt{E},\texttt{CF},\texttt{GG} 三张票是无效的。
头像 人生苦短,但求成长
发表于 2022-02-23 10:02:57
while True: try: n = int(input()) name_list = input().split() m = int(input()) vote_list = input().split() 展开全文
头像 Damonhmz
发表于 2022-03-13 21:45:50
import java.util.*; /** * HJ94 记票统计 */ public class HJ094 { public static void main(String[] args) { Scanner sc = new Scanner(System.i 展开全文
头像 摸鱼学大师
发表于 2021-11-04 13:21:33
题目的主要信息: 先给出mmm位候选人的名字,字符串表示 后续给出nnn张票,票上是候选人的名字,统计每位候选人的票数 票里出现非候选人的名字则是属于不合法 输出按照输入的候选人的顺序排序 方法一:暴力查找 具体做法: 我们可以用一个pair型的vector数组来存储这个每个候选人及其票数,输入 展开全文
头像 为什么机器不学习
发表于 2021-01-10 19:28:04
这里只要注意审题,别的没什么难点。比如题目要求按照候选人的输入顺序输出结果,假设我们使用了HashMap来存储,那么直接遍历HashMap是不对的,因为HashMap并不能保证输入的顺序,使用LinkedHashMap可以解决这个问题。或者像我这样,干脆根据String[]的顺序来输出,通常认为Li 展开全文
头像 Stessain
发表于 2022-02-22 19:19:20
思路:将两组字符串分别用split(" ")方法分开,通过两层for循环逐一比对。 import java.util.*; public class Main{ public static void main(String[] args){ Scanner in = new 展开全文
头像 牛客734163773号
发表于 2022-03-08 17:17:25
while True: try: candidates = int(input()) cand_name = input().split() voters = int(input()) votes = input().split 展开全文
头像 liblab
发表于 2022-02-10 22:43:36
20行的代码为什么要写五六十行 #include<stdio.h> #include<string.h> int main() { int n, m; char name[101][32]; while (~scanf("%d", &n)) { 展开全文
头像 日不落拓海海
发表于 2022-02-13 21:47:31
字典法求解。字典的遍历: for key,values in dic.items() while True: try: n = int(input()) s = input().split(" ") candidate={} 展开全文
头像 米斯特rollin
发表于 2022-05-04 10:28:40
题解 此题没什么难度,可以使用数组来统计投票结果,因为数组是有序的。 代码 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = 展开全文
头像 限时烟花
发表于 2022-03-09 22:01:24
HJ94 记票统计 题解 by 限时烟花 抽丝剥茧 这是一道比较初级的入门题,主要考查的是对于输入的正确捕获和一些判断。整体难度是比较简单的。 化繁为简 利用python中的split函数很容易地可以得到候选人列表和投票列表。 在获得候选人和投票的列表之后,我们只需要对投票的结果进行遍历,并对每一个 展开全文