рдПрдХ рдмрдЯрди рдХреЗ рдкреБрд╢ рджреНрд╡рд╛рд░рд╛ рдбреНрд░рд╛ рдХрд░реЗрдВ

рдПрдХ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рдлреБрдЯрдмреЙрд▓ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдХрд╛рд░реНрдп, рдореБрдЭреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЬреЛрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЕрд░реНрдерд╛рддреНред рдЯреЙрд╕ рдбреНрд░рд╛ред рд▓реЗрдХрд┐рди рдЗрд╕реЗ "рд╕рд╛рдорд╛рдиреНрдп" рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрддреНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рдЯреЛрдХрд░реА рдХреЛ рд╕реАрдбреЗрдб рдФрд░ рдЕрди рд╕реАрдбреЗрдб рдЯреАрдореЛрдВ ( рдЙрджрд╛рд╣рд░рдг ) рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╛рдпрд╛, рдЬреЛ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдирддреАрдЬрддрди, рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдЧрд▓-рд╕рд░реНрдХрд▓ рдЯреЙрд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рд╢рд░реНрддреЛрдВ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛:
рдбреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреА рд╕реНрдерд┐рддрд┐:
  1. рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЗрдВ рд╣реИрдВред
  2. рдкрд╣рд▓реЗ рджреМрд░ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдПрди -1 рдореИрдЪ рдЦреЗрд▓реЗрдЧреАред
  3. рдЯреАрдо N рдХрд┐рд╕реА рднреА рджреМрд░ рдореЗрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдирд╣реАрдВ рдЦреЗрд▓ рд╕рдХрддреАред
  4. рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдореЗрдВ, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдЕрджреНрд╡рд┐рддреАрдп, рдЧреИрд░-рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬреЛрдбрд╝реЗ рдмрдирд╛рддреЗ рд╣реИрдВред
  5. рдпрджрд┐ рдПрдХ рджреМрд░ рдореЗрдВ, рдЯреАрдо N рдЯреАрдо M рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреА рд╣реИ, рддреЛ рдХреНрд░рдорд╢рдГ, рдЙрд╕реА рджреМрд░ рдореЗрдВ, рдЯреАрдо M рдЯреАрдо N рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреА рд╣реИред

рджреЛ-рдЖрдпрд╛рдореА рдбреНрд░рд╛рдЯреЗрдмрд▓ [i, j] рд╕рд░рдгреА рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рдХреЗ рд╕рд╛рде рднрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЬреЛрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд (C #, .Net 4.0 рднрд╛рд╖рд╛) рдорд┐рд▓реА:

1. рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рд╕реЗ рдЯреАрдо рдПрди рдЪреБрдиреЗрдВ (рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЪреИрдВрдкрд┐рдпрдирд╢рд┐рдк рдореЗрдВ рдЙрдирдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рд╕реЗ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
string[] teams = new string[] {"", "", "", "", "", "", "", "", "", "", "", "", " ", " ", "", ""}; 

2. рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ DrawTable [i, N] рд╕реЗрд▓ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реБрд░реВ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдХрд┐рд╕реА рднреА рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП {-1}:
 drawtable[i, j]=-1; if (drawtable[i, j] < 0) {тАж} 

3. рд╣рдо рдПрди рдЯреАрдо рдХреЗ рд▓рд┐рдП рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рдЯреЗрдмрд▓рдбреНрд░реЙрд╡ [i, N] = рд░реИрдВрдбрдо = рдПрдордЖрдИ рдЗрдирдкреБрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3-5:
 int pair = generator.Next(1000, 1000000)%teams.Length; 

рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 int pair = generator.Next(0, teams.Length) 
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдмрд┐рдЦрд░рд╛рд╡ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рд╣реИред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕реНрдерд┐рддрд┐ 3 рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:
 if (pair != j) 

рдЖрдЧреЗ рдЦрдбрд╝реА рд╣реИ
 if (pair != drawtable[k, j]) 
рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдЬрд╛рдБрдЪ
 if (pair != drawtable[i, k]) 
рд╢рд░реНрддреЗрдВ 4ред
рдпрджрд┐ рд╢рд░реНрддреЗрдВ 3, 4 рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдПрдХ рдЬреЛрдбрд╝реА рдмрдирддреА рд╣реИ:
 drawtable[i, j] = pair; drawtable[i, pair] = j; 

рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рднрд╛рдЧреА рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
 for (int i = 0; i < teams.Length - 1; i++) { for (int j = 0; j < teams.Length; j++) { } } 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ:
рдЫрд╡рд┐
рдпрджрд┐, рдЧрд▓рдд рд╕рд░рдгреА рдЧрдарди рдХреЗ рдХрд╛рд░рдг, рддрдерд╛рдХрдерд┐рдд "рдордЫрд▓реА" (рдФрд░ рдпрд╣ рдЙрдарддрд╛ рд╣реИ) рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрдм рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╕рд░рдгреА рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╣реЛрдЧреА, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╡рд╛рдкрд╕ рд▓реЗ рд▓реА рдЧрдИ рд╣реИ:
 fail++; if (fail > teams.Length) {for (int k = 0; k < teams.Length; k++){drawtable[i, k] = -1;} fail = 0; j = -1;} 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдЧреЗрдВрджреЛрдВ, рдЕрдВрдбреЗ рдХреЗ рдХреИрдкреНрд╕реВрд▓ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреИрд▓реЗрдВрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ, рдЬреЛ рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ рд╣реИред


Source: https://habr.com/ru/post/In167539/


All Articles