华为机试-票数统计

题目描述
请实现接口:
unsigned int AddCandidate (char* pCandidateName);
功能:设置候选人姓名
输入: char* pCandidateName 候选人姓名
输出:无
返回:输入值非法返回0,已经添加过返回0 ,添加成功返回1

Void Vote(char* pCandidateName);
功能:投票
输入: char* pCandidateName 候选人姓名
输出:无
返回:无

unsigned int GetVoteResult (char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源
输入: char* pCandidateName 候选人姓名。当输入一个空指针时,返回无效的票数
输出:无
返回:该候选人获取的票数

void Clear()
// 功能:清除投票结果,释放所有资源
// 输入:
// 输出:无
// 返回

输入描述:
输入候选人的人数,第二行输入候选人的名字,第三行输入投票人的人数,第四行输入投票。
输出描述:
每行输出候选人的名字和得票数量。
示例1
输入

4
A B C D
8
A B C D E F G H
输出

A : 1
B : 1
C : 1
D : 1
Invalid : 4

程序实现

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. /**
  5. * 题目描述 请实现接口: unsigned int AddCandidate (char* pCandidateName); 功能:设置候选人姓名 输入:
  6. * char* pCandidateName 候选人姓名 输出:无 返回:输入值非法返回0,已经添加过返回0 ,添加成功返回1
  7. *
  8. * Void Vote(char* pCandidateName); 功能:投票 输入: char* pCandidateName 候选人姓名 输出:无
  9. * 返回:无
  10. *
  11. * unsigned int GetVoteResult (char* pCandidateName);
  12. * 功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源 输入: char* pCandidateName
  13. * 候选人姓名。当输入一个空指针时,返回无效的票数 输出:无 返回:该候选人获取的票数
  14. *
  15. * void Clear() // 功能:清除投票结果,释放所有资源 // 输入: // 输出:无 // 返回
  16. *
  17. * 输入描述: 输入候选人的人数,第二行输入候选人的名字,第三行输入投票人的人数,第四行输入投票。 输出描述: 每行输出候选人的名字和得票数量。 示例1 输入
  18. *
  19. * 4 A B C D 8 A B C D E F G H 输出
  20. *
  21. * A : 1 B : 1 C : 1 D : 1
  22. *
  23. */
  24. public class Main {
  25. static List<String> candiList = new ArrayList<>();
  26. static List<Integer> votess = new ArrayList<>();
  27. public static void main(String[] args) {
  28. Scanner scanner = new Scanner(System.in);
  29. while (scanner.hasNext()) {
  30. int addResult = 0;
  31. String candidateNum1 = scanner.nextLine();
  32. String candidate = scanner.nextLine();
  33. String voteNum1 = scanner.nextLine();
  34. String vote = scanner.nextLine();
  35. String[] candidates = candidate.split(" ");
  36. String[] votes = vote.split(" ");
  37. int candidateNum = Integer.parseInt(candidateNum1);
  38. int voteNum = Integer.parseInt(voteNum1);
  39. for (int i = 0; i < candidates.length; i++) {
  40. addResult = AddCandidate(candidates[i]);
  41. }
  42. candiList.add("Invalid");
  43. votess.add(0);
  44. for (int i = 0; i < votes.length; i++) {
  45. Vote(votes[i]);
  46. }
  47. int numbs = 0;
  48. for (int i = 0; i < candidateNum; i++) {
  49. String c = candiList.get(i);
  50. numbs = GetVoteResult(c);
  51. System.out.println(c + " : " + numbs);
  52. }
  53. System.out.println("Invalid" + " : " + votess.get(candiList.indexOf("Invalid")));
  54. Clear();
  55. }
  56. }
  57. // 设置候选人姓名
  58. public static int AddCandidate(String pCandidateName) {
  59. if (pCandidateName == " ") {
  60. return 0;
  61. }
  62. if (!candiList.contains(pCandidateName)) {
  63. candiList.add(pCandidateName);
  64. votess.add(0);
  65. return 1;
  66. } else {
  67. return 0;
  68. }
  69. }
  70. // 功能:投票
  71. public static void Vote(String pCandidateName) {
  72. int index = 0;
  73. if (candiList.contains(pCandidateName)) {
  74. index = candiList.indexOf(pCandidateName);
  75. votess.set(index, votess.get(index) + 1);
  76. } else {
  77. index = candiList.indexOf("Invalid");
  78. votess.set(index, votess.get(index) + 1);
  79. }
  80. }
  81. // 功能:获取候选人的票数。
  82. public static int GetVoteResult(String pCandidateName) {
  83. int index = candiList.indexOf(pCandidateName);
  84. return votess.get(index);
  85. }
  86. // 功能:清除投票结果,释放所有资源
  87. public static void Clear() {
  88. candiList.clear();
  89. votess.clear();
  90. }
  91. }
时间: 2024-08-10 19:06:33

华为机试-票数统计的相关文章

华为机试 — 字符统计

1.字符统计 如果统计的个数相同,则按照ASII码由小到大排序输出 .如果有其他字符,则对这些字符不用进行统计. 实现以下接口:    输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)    按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出    清空目前的统计结果,重新统计调用者会保证:输入的字符串以'\0'结尾. 输入描述:输入一串字符. 输出描述:对字符中的各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到

华为机试(2)

简单题   题目描述  输入一个字符串,统计其出现频率最高的字符,并输出.若存在两个字符出现频率相同,则输出字典序较小的那一个   输入描述  :一个字符串,保证没有空格,以回车符结束,字符串长度<=20   输出描述  :一个字符   输入样例 :aabbaabb  输出样例  :a  解题思路:做一个频率数组来统计所有字符的出现频率,机试时候不会有汉字输入,因此只考虑输入是ASCII编码的情况. #include<string> #include<iostream> us

[华为机试真题][2014]63.等式变换

题目 输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立. 1 2 3 4 5 6 7 8 9 = X 比如: 12-34+5-67+89 = 5 1+23+4-5+6-7-8-9 = 5 请编写程序,统计满足输入整数的所有整数个数. 输入: 正整数,等式右边的数字 输出: 使该等式成立的个数 样例输入:5 样例输出:21 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 *

[华为机试真题]66.单词搜索

题目 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 * 题目:WordSearch * 来源:华为机试真题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <stack> #include

华为机试正式版(西安c/c++/java),今天下午去机试的题目,新鲜出炉了!

以下题目都是回忆的,题目都很简单, 大家有些基础就可以参加!(语言可以是c/c++,也可以是java的) 题目一(60分): 字符串操作, 将小写转换成大写, 将大写转化为小写, 数字的不做转换 例如, 输入:aBcD12 输出:AbCd12 题目二(100分): 将输入的字符串按照规定重新排序,如果字符串长度为奇数, 则中间的字符保持不变, 中间字符左侧降序排列, 右侧字符按照升序排列, 如果字符串长度为偶数,则左半侧字符降序排列,右半侧字符则按照升序排列 例如, 输入:ab5de 输出:ba

华为机试 --- 求最大三位数

题目:输入10位0-9数字,取其中三位不同数字组合,求组合出来的最大三位数. 如输入 1 2 3 4 5 6 7 8 9 0,组合出来987最大. 测试代码如下: #include <stdio.h> #include <stdlib.h> int IsSame(int *a, int num); int main() { int i=0; int j=0; int a[10]={0}; int input =0; int length =0; int temp=0; for (i

[华为机试真题][2015]65.和尚挑水

题目 某寺庙里7个和尚:轮流挑水,为了和其他任务不能冲突,各人将有空天数列出如下表: 和尚1: 星期二,四; 和尚2: 星期一,六; 和尚3: 星期三,日; 和尚4: 星期五; 和尚5: 星期一,四,六; 和尚6: 星期二,五; 和尚7: 星期三,六,日; 请将所有合理的挑水时间安排表 思路 回朔法求解 回朔法即每进行一步,都试图在当前部分解的基础上扩大该部分解.扩大时,首先检查扩大后是否违反了约束条件,若不违反,则扩大之,然后继续在此基础上按照类似的方法进行,直至成为完整解:若违反,则放弃该步

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

[华为机试]输入数字的汉语拼音,每个拼音的首字母大写。输出该数字的阿拉伯数字。

//输入数字的汉语拼音,每个拼音的首字母大写.输出该数字的阿拉伯数字. //JiuBaiJiuShiJiu -> 999 #include<stdio.h> #include<string.h> int result = 0; void add(int n,char wei[]) { if(strcmp(wei,"Wan") == 0) result = result + n * 10000; else if(strcmp(wei,"Qian&q