CS50 Plurality问题:print_winner函数实现求思路指引
bool vote(string name) { // TODO for (int i = 0; i < candidate_count; i++) { if (strcmp(candidates[i].name, name) == 0) //W's { candidates[i].votes++; return true; } else if (strcmp(candidates[i + 1].name, name) == 0) { candidates[i].votes++; return true; } else { return false; } } return 0; } // Print the winner (or winners) of the election void print_winner(void) { // TODO for (int i = 0; i < candidate_count; i++) { if (candidates[0].votes > candidates[i].votes) { printf("%s", candidates[0].name); // 0 = bob/ first break; } else { printf("%s\n", candidates[1].name); } } }
我正在完成CS50的Plurality选举任务,需要实现print_winner函数输出选举获胜者(可能有多个并列),但始终理不清思路。恳请提供思路指引而非直接答案,希望得到简化的分析帮助。
思路指引
- 第一步:遍历所有候选人,找出当前所有候选人中的最高票数数值,只需要记录这个票数,不用关联具体候选人。
- 第二步:再次遍历所有候选人,把每一位票数等于最高票数的候选人名字打印出来。
- 关键注意点:
- 不要默认只考虑前两位候选人,要覆盖所有候选人的情况
- 若存在多个并列第一,所有符合条件的候选人都要输出,不能只打印一个
内容的提问来源于stack exchange,提问作者JamieForster
相关产品推荐
相关产品推荐

