2017-03-14 6 views
-1

우리는 16 명의 선수 리그와 15 주간의 라운드 로빈 일정을 가지고 있습니다. 각 플레이어는 한 번씩 (라운드 로빈) 서로 대결합니다. 각 멤버가 다른 플레이어와 똑같은 4 인조에서 정확히 3 번 플레이 할 수 있는지보고 싶습니다. 내가 실행 한 모든 라운드 로빈 프로그램은 일부 플레이어가 서로 5 회 플레이하고 다른 플레이어는 한 번만 플레이하는 것으로 끝납니다. 은 라운드 로빈 형식 내에서 모든 플레이어가 똑같은 4 인 플레이에서 정확히 3 번 플레이 할 수있는 방법입니다. 감사합니다.라운드 로빈 일정 관리

답변

-1

다음은 C++에서이 문제를 해결하는 방법입니다. 이것은 팀을 리그로 무작위로 추출한 다음, 모든 팀이 다른 세 팀을 일정 시간 재생하는 무작위 스케줄을 생성하는 간단한 프로그램입니다. 원하는대로 추가로 사용자 지정할 수 있습니다.

#include <vector> 
#include <string> 


std::vector<std::string> createSchedule(std::vector<std::string> teams, int numberOfGames) 
{ 
    //Create the randomized schedule 

    std::vector<std::string> schedule; 
    int counter = 0; 
    for (int i = 0; i < numberOfGames; i++) { 
     std::string game1; 
     std::string game2; 
     if (counter == 0) { 
      game1 = teams[0] + " vs " + teams[1]; 
      game2 = teams[2] + " vs " + teams[3]; 
     } 
     else if (counter == 1) { 
      game1 = teams[0] + " vs " + teams[2]; 
      game2 = teams[1] + " vs " + teams[3]; 
     } 
     else if (counter == 2) { 
      game1 = teams[0] + " vs " + teams[3]; 
      game2 = teams[1] + " vs " + teams[2]; 
     } 
     schedule.push_back(game1); 
     schedule.push_back(game2); 

     if (counter == 2) { 
      counter = 0; 
     } 
     else { 
      counter++; 
     } 
    } 

    return schedule; 
} 

int main() 
{ 
    std::vector<std::string> teams = { "Team1", "Team 2", "Team 3", "Team 4", "Team 5", "Team 6", "Team 7", "Team 8", "Team 9", "Team 10", "Team 11", "Team 12", "Team 13", "Team 14", "Team 15", "Team 16" }; 

    std::vector<std::string> group1; 
    std::vector<std::string> group2; 
    std::vector<std::string> group3; 
    std::vector<std::string> group4; 

    //randomize teams into groups 
    for (int i = 0; i < teams.size(); i++) { 
     int num = rand() % 15; 

     if (num >= 0 && num < 4 && group1.size() < 4) { 
      group1.push_back(teams[i]); 
     } 
     else if (num >= 4 && num < 8 && group2.size() < 4) { 
      group2.push_back(teams[i]); 
     } 
     else if (num >= 8 && num < 12 && group3.size() < 4) { 
      group3.push_back(teams[i]); 
     } 
     else if (num >= 12 && num < 16 && group4.size() < 4) { 
      group4.push_back(teams[i]); 
     } 
     else { 
      if (group1.size() < 4) { 
       group1.push_back(teams[i]); 
      } 
      else if (group2.size() < 4) { 
       group2.push_back(teams[i]); 
      } 
      else if (group3.size() < 4) { 
       group3.push_back(teams[i]); 
      } 
      else if (group4.size() < 4) { 
       group4.push_back(teams[i]); 
      } 

     } 
    } 

    //Create a schedule of 15 games for each group 
    std::vector<std::string> schedule1 = createSchedule(group1, 15); 
    std::vector<std::string> schedule2 = createSchedule(group2, 15); 
    std::vector<std::string> schedule3 = createSchedule(group3, 15); 
    std::vector<std::string> schedule4 = createSchedule(group4, 15); 

    //Combine them into one big master schedule group by each set of games 
    //The first 8 games would be the first week of games for the whole league, etc... 
    std::vector<std::string> masterSchedule; 

    for (int i = 0; i < schedule1.size(); i += 2) { 
     masterSchedule.push_back(schedule1[i]); 
     masterSchedule.push_back(schedule1[i + 1]); 
     masterSchedule.push_back(schedule2[i]); 
     masterSchedule.push_back(schedule2[i + 1]); 
     masterSchedule.push_back(schedule3[i]); 
     masterSchedule.push_back(schedule3[i + 1]); 
     masterSchedule.push_back(schedule4[i]); 
     masterSchedule.push_back(schedule4[i + 1]); 
    } 

    return 0; 
} 
+0

죄송합니다 ... 난 그냥 내 골프 리그 일정 질문에 대한 답을 찾기 위해 사이트에 비틀 거렸다. 질문에 대한 답변을 제공하기 위해 여기에 오지 않은 경우 이해합니다. –

+0

이것은 프로그래밍 질문을위한 사이트이므로 프로그래밍 답변을 제공했습니다. 네가 원하는게 뭐 다른지 모르겠다. – jmbockhorst

+0

아마 내가 네가 원하는 스케줄을 줄 수있을 것 같아. 걱정 마... –

-1

나는 당신이 Whist 디자인을 찾고있을 것이라고 생각한다. Go here을 클릭하고 'Whist'및 '16 items '을 클릭하십시오. 테이블은 4 인조가되고, 페어는 라운드 로빈의 게임입니다. 동일한 15 라운드 일정은 아래에서 반복됩니다. 나는 프로그래머/수학자 아니다

[(16 1) (9 14)] [(2 4) (5 8)] [(3 10) (12 13)] [(6 15) (7 11)] 
[(16 2) (10 15)] [(3 5) (6 9)] [(4 11) (13 14)] [(7 1) (8 12)] 
[(16 3) (11 1)] [(4 6) (7 10)] [(5 12) (14 15)] [(8 2) (9 13)] 
[(16 4) (12 2)] [(5 7) (8 11)] [(6 13) (15 1)] [(9 3) (10 14)] 
[(16 5) (13 3)] [(6 8) (9 12)] [(7 14) (1 2)] [(10 4) (11 15)] 
[(16 6) (14 4)] [(7 9) (10 13)] [(8 15) (2 3)] [(11 5) (12 1)] 
[(16 7) (15 5)] [(8 10) (11 14)] [(9 1) (3 4)] [(12 6) (13 2)] 
[(16 8) (1 6)] [(9 11) (12 15)] [(10 2) (4 5)] [(13 7) (14 3)] 
[(16 9) (2 7)] [(10 12) (13 1)] [(11 3) (5 6)] [(14 8) (15 4)] 
[(16 10) (3 8)] [(11 13) (14 2)] [(12 4) (6 7)] [(15 9) (1 5)] 
[(16 11) (4 9)] [(12 14) (15 3)] [(13 5) (7 8)] [(1 10) (2 6)] 
[(16 12) (5 10)] [(13 15) (1 4)] [(14 6) (8 9)] [(2 11) (3 7)] 
[(16 13) (6 11)] [(14 1) (2 5)] [(15 7) (9 10)] [(3 12) (4 8)] 
[(16 14) (7 12)] [(15 2) (3 6)] [(1 8) (10 11)] [(4 13) (5 9)] 
[(16 15) (8 13)] [(1 3) (4 7)] [(2 9) (11 12)] [(5 14) (6 10)]