评选最佳品牌
n个评委投票,在m个商品中评选一个最佳品牌。
评选采用多轮淘汰制,即:每轮投票,淘汰掉得票最少的候选品牌(得票并列最少的品牌一起淘汰)。
如此一轮轮淘汰下去,如果最后只剩下一个品牌当选,即告评选成功。
但如果在某轮投票中,当时未被淘汰的所有候选品牌(大于等于两个品牌)都并列得票最少,即告评选失败。
如果评选成功就输出当选品牌号。否则输出最后一轮评选时唯一选票数的相反数。
在评选流程中,每个评委的态度都可用一个序列来表示,例如当m=5 时,某评委的评选态度序列为:
3、5、1、2、4则表示该评委: 优先投3号,当3 号被淘汰时投5号,当3和5都被淘汰时投 1,当3、5、1都被淘汰时投 2,仅剩 4 号时才投 4 号品牌的票。
选票的序列中可以表示弃权,用0来表示,例如当 m=5 时,某评委的评选态度序列为: 3、5、0,则表示该评委:优先投3号,当3号被淘汰时投5号,其它情况下不投任何品牌的票编程实现:
请你编一个程序,模拟各轮投票的过程,得到评选结果输入:
第一行: m(0 输出: 评选结果。 样例1输入: 3 4 123 213 132 1 0 样例1输出: 1 样例2输入: 3 4 321 213 231 312 样例2输出: -2 样例数据分析 样例1: 第一行3 4代表3个品牌,4个评委 第一轮投票,3个评委优先选择1号品牌,1个评委选择2号品牌,品牌3得票最少,淘汰掉 第二轮投票3个评委优先选择1号品牌,1个评委选择2号品牌,品牌2得票最少,淘汰掉,淘汰2号品牌后,只剩一个1号品牌,1号品牌胜出 最终结果1 样例2: 第一行34代表3个品牌4个评委 第一轮投票,2个评委选择2号品牌,两个评委选择3号品牌,1号得票最少,淘汰掉 第二轮投票,2个评委选择2号品牌,两个评委选择3号品牌,由于只剩下两个品牌,且并列最少,都是2票代表评选失败需要输出最后一轮票数2的相反数-2 最终结果-2
发表评论 取消回复