论文部分内容阅读
大多数人的记忆中都会有上小学时选班长的情景,再后来,我们也经历过许多不同的选举过程。如何设计公平合理的选举规则是远远超出了数学和算法范畴的复杂问题。本文只讨论在特定规则下如何获得选举结果的相关的算法。
一群人按照一人一票的方式(每张选票具有相同权重)在(通常数量很少的)候选人中选出一位“胜出者”(如班长),最简单的规则就是票数最多者当选(假设没有并列)。在没有电子手段之前,最流行的做法就是投票完成后,将候选人名字列在黑板上,随着“唱票”进程,在候选人名字后画“正”字。最后数出每人得票数,即可知谁是当选者。
模拟“画正字”的计票方式
如果候选人人数k不大,可以定义k个元素的数组candidates,其中candidates[i]是整数,表示候选人i的得票数,i=0,1,…,k-1。若投票人数为n(通常n
一群人按照一人一票的方式(每张选票具有相同权重)在(通常数量很少的)候选人中选出一位“胜出者”(如班长),最简单的规则就是票数最多者当选(假设没有并列)。在没有电子手段之前,最流行的做法就是投票完成后,将候选人名字列在黑板上,随着“唱票”进程,在候选人名字后画“正”字。最后数出每人得票数,即可知谁是当选者。
模拟“画正字”的计票方式
如果候选人人数k不大,可以定义k个元素的数组candidates,其中candidates[i]是整数,表示候选人i的得票数,i=0,1,…,k-1。若投票人数为n(通常n