You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:45:07