投票系统

2:澳大利亚投票系统要求选民们将所有候选人按意愿选择的程度排序,一张选票就是一个排序。一开始,每张选票的首选项将被统计。若有候

选人得票超过50%,他将直接胜出;否则,所有并列得票最低的候选人将出局,而那些将出局候选人排在第一位的选票将被重新统计为排名最高

的未出局候选人。这一筛选过程将持续进行,直到某个候选人得票超过50%的选票,或所有候选人得票相同。

输入:输入第一行包含一个正整数,代表测试的数据组数。然后是一个空行,接下来是数据,每两组数据之间用空行隔开。
每组数据第一行为一个整数n<=20,代表候选人数目。接下来n行按顺序给出候选人的名字,最长80个字符,可以是任何可打印字符。接下来是

最多1000行的选票,每行描述一张选票的内容。每张选票包含1到n的某个排列。第一个为首选,第二个为次选,以此类推。

输出:对于每组数据,输出数据可能是单独一行,即胜出者的名字;或者若干行,分别包含所有平局的候选人。每两组数据之间用一个空行隔

开。

样例输入:                              样例输出
1                                       John Doe

3
John Doe
Jane Smith
Jane Austen
1 2 3
2 1 3
2 3 1
1 2 3
3 1 2

样例说明:

只有一组数据,唯一的一组数据中有 3 个候选人,他们的得票第一轮是:John Doe 两票,Jane Smith 两票,Sirhan Sirhan 一票(为什么?

因为有两张选票第一个选的是 1,所以对应序号为 1 的候选人 John Doe 所得票为两票,同理可以得到其他两个候选人的得票数)。

接下来,第三个候选人得票数最少,因此他出局了,只剩下第一和第二个候选人,由于第三个候选人出局,那么选票重新统计,由于第一至第

四张选票均不是第三个候选人打头,所以对下一轮的得票数不影响,第五张选票去掉打头的第三个候选人,位于第一位的是第一个候选人,则

此轮计票结果是:John Doe 三票,Jane Smith 两票,由于 John Doe 获得的选票已经超过总选票数的一半,则判定 John Doe 选举获胜

原文地址:https://www.cnblogs.com/wwjyt/p/3153117.html