找出数组中最大的 n 个元素

unc*_*123 1 c c99

我有一个数组,我需要在数组中找到 n 个并列案例,例如{1,2,3,3}我需要程序返回两个 3

void print_winner(void)
{
    // TODO
    string arr[9];
    string name = "";
    int largest = 0;
    for (int i = 0; i < voter_count; i++)
    {
        if (largest<candidates[i].votes)
        {
            largest = candidates[i].votes;
            name = candidates[i].name;
        }

    }

    // arr[0] = name;
    printf("%s\n", name);
    return;
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,候选人是一个具有两个属性的结构:名称和投票我需要该程序打印出票数最高的名称,即使有 3 路平局

我想我会遍历列表找到最大的 int 然后删除那个 int 并再次遍历列表以查看是否有任何元素等于原始列表中的最大元素,如果是,则将名称添加到数组中,最后打印所有名字)

Mel*_*nWM 5

一种通常很好的编程方法是将问题分解并解决其单独的部分。

在这种情况下,设置问题的一种方法是打印所有得分最高的人的姓名。但这个问题有些复杂。

设置问题的另一种方法如下:

  • 找出最高分。
  • 找到最高分后,打印所有得分最高的人的名字。

这些子问题中的每一个都更容易,并且应该一起解决问题。

我更喜欢教别人如何钓鱼,所以我不想通过在代码中为你实现解决方案来破坏或破坏你学习和改进并变得很棒的机会。非常欢迎您要求澄清,但是,我非常愿意提供帮助:)。