2016-01-16 8 views
0

Я пытаюсь реализовать алгоритм множественного голосования, в котором приоритеты используются для разрыва связей. То, что я имею в виду по приоритетам, следующее. Например, у нас есть три класса - A, B и C. Но приоритет - A, C и B, начиная с самого высокого - A до самого низкого - B. Поэтому, когда A и C имеют равные голоса и больше B, A из-за его более высокого приоритета выиграет множество голосов.Множественное голосование с приоритетами для реализации алгоритма тай-лома

Единственная идея, которая у меня есть для тай-брейка, заключается в реализации многих if-утверждений. Если я не ошибаюсь, это 10 для 3 классов. Но как это можно обобщить, чтобы я мог реализовать алгоритм для K-классов? Не могли бы вы помочь с некоторым кодом? Это может быть какой-то императивный язык, такой как C, Java, JS, C#, Python и т. Д. Или псевдокод.

спасибо!

+1

Вместо поиска победителя путем повторения всех кандидатов и проверки «если голос [i]> vote [max]', вы должны использовать что-то вроде 'if vote [i]> vote [max] или (vote [i ] = vote [max] и приоритет [i]> priority [max]) '. – m69

ответ

1

Вы можете сортировать исходя из количества голосов в первую очередь. Затем перейдите по отсортированному списку и для тех записей с равным количеством голосов, снова выполните сортировку, на этот раз используя приоритет.