模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票,选举结束后获取各个候选人的得票数以及无效票的个数。 例如: 添加了“ChenFeng”和“Dongli”作为候选人。
请实现接口: unsigned int AddCandidate (char* pCandidateName);
Void Vote(char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源 输出:无 void Clear() // 功能:清除投票结果,释放所有资源 |
#include <stdlib.h> #include <map> #include <string> #include "oj.h" using namespace std; map<string, unsigned int> CandidateMap; unsigned int NullVoteNum = 0; unsigned int AddCandidate(char* pCandidateName) { map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName); if (pFind_it == CandidateMap.end()) { CandidateMap.insert(make_pair(pCandidateName, 0)); return 1; } else return 0; } void Vote(char* pCandidateName) { map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName); if (pFind_it != CandidateMap.end()) (pFind_it->second)++; else NullVoteNum++; } unsigned int GetVoteResult(char* pCandidateName) { if (NULL == pCandidateName) return NullVoteNum; map<string, unsigned int>::iterator pFind_it = CandidateMap.find(pCandidateName); return pFind_it->second; } void Clear() { CandidateMap.erase(CandidateMap.begin(), CandidateMap.end()); NullVoteNum = 0; }
模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票,选举结束后获取各个候选人的得票数以及无效票的个数。 例如: 添加了“ChenFeng”和“Dongli”作为候选人。
请实现接口: unsigned int AddCandidate (char* pCandidateName);
Void Vote(char* pCandidateName);
功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源 输出:无 void Clear() // 功能:清除投票结果,释放所有资源 |