Турнирная генерация: размещение брекетов
В настоящее время я работаю над созданием системы турнирной сетки, но не могу придумать хороший алгоритм для следующего:
У меня есть список, где TournamentRound выглядит следующим образом:
public class TournamentRound
{
public int TotalAtBeginning { get; set; }
public int TotalAfterRound { get; set; }
public int EntriesPerMatch { get; set; }
public int WinnersPerMatch { get; set; }
}
У меня есть поколение раундов и знаю все значения. Например:
Round 1: 12 Participants, 4 Entries per Match, 2 Winners: 6 in the end
Round 2: 6 Participants, 2 Entries per Match, 1 Winner: 3 in the end
Round 3: 3 Participants, 3 Entries per Match, 1 winner: END
Вот моя проблема:
Допустим, только 6 коробок имеют место на одной странице окончательного PDF.Как я могу рассчитать, где находятся поля, учитывая фиксированные размеры страницы и блока?
РЕДАКТИРОВАТЬ для уточнения!
Я нарисовал следующую картинку, чтобы показать, как будут выглядеть результаты этих трех раундов, упомянутых выше. Например, проблема заключается в том, что только 6 ящиков имеют место для размещения на одной странице по высоте, что означает, что каким-то образом нужно будет сделать разрыв страницы для определенных раундов.
Если это поможет, я думаю о построении древовидной структуры, где каждый узел удерживает свою позицию и на какой странице (1,2,3...) он находится.