cs50 多重气味测试。如何开发这个 void print_winner(void) 函数的最佳实践是啥

Posted

技术标签:

【中文标题】cs50 多重气味测试。如何开发这个 void print_winner(void) 函数的最佳实践是啥【英文标题】:cs50 plurality smell test. What's best practice on how to develop this void print_winner(void) functioncs50 多重气味测试。如何开发这个 void print_winner(void) 函数的最佳实践是什么 【发布时间】:2021-08-10 03:56:04 【问题描述】:

查看 multiple.c 的分发代码让我相信空白 (void)print_winner(void) 函数可以通过几个循环来解决。但是在实践中使用归并排序解决这个问题会更好吗?更具体地说,它是否要求我制作一个新的排序投票总数数组,其中候选人按最小投票排序为最大投票,我只是从数组中打印出最大的投票获取者?

在不透露答案的情况下,有经验的开发人员能否告诉我他们会具体使用什么样的逻辑?即:你想使用递归吗?这里的最佳做法是什么?为什么?

    https://cdn.cs50.net/2020/fall/psets/3/plurality/plurality.c

请原谅链接。我的帐户还不能嵌入图片,而且我是这类论坛的新手。

【问题讨论】:

是cdn.cs50.net/2020/fall/psets/3/plurality/plurality.c 你的代码吗?这是一个最小的例子吗? (当它处于最小形式时,将其复制到此处,而不是链接) @WurmD 链接指向来自 cs50 的分发代码。在不提供所有代码的情况下,我不确定是否可以从我将要编写的区域中收集到足够的上下文。 【参考方案1】:

看起来在这种情况下,由于您已经有一个候选人数组,您只需循环一次即可找到得票最多的候选人。无需创建一个新数组,只需在 O(n) 时间复杂度的地方完成即可。假设候选人[0] 的票数最多,如果另一个候选人的票数更多,则在循环时更新获胜者。您还可以添加检查以查看是否有人拥有相同数量的选票,在这种情况下,您可能需要另一个数组来保存“当前最大”候选人。如果有新的最大值,请更新它。

【讨论】:

非常感谢您的反馈!你在将新的(对我而言)材料与这个问题集联系起来方面非常有帮助。 如果你还需要更多帮助,我也可以帮忙写出函数:-)

以上是关于cs50 多重气味测试。如何开发这个 void print_winner(void) 函数的最佳实践是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ruby​​ 的多重赋值为 void 变量赋值?

我的 CS50 Vigenere 代码有啥问题?

void 方法的 OCMock 测试

你的压力狗狗懂,通过闻味就知道!英国学者做实验论证,专门收集人做数学题时的气味...

如何在不使用 argv 的情况下获取字符串数组 - CS50 pset2

为啥 Vigenere 失败 (CS50x)?