рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо: рдХреИрд╕реЗ рдЕрдЧрд▓реЗ lexicographic рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП

рдЫрд╡рд┐

рдпрджрд┐ рдЖрдк рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рдСрд░реНрдбрд░ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреНрд░рдо рдореЗрдВ рдЫрдВрдЯрдиреА рд╣реИред рдпрд╛рдиреА рд╡рд░реНрдгреЛрдВ рдХрд╛ рдХреНрд░рдо - AAA тЖТ AAB тЖТ AAC тЖТ AAD тЖТ тАжтАжтАж тЖТ WWW - рдХреЛ рд╡рд░реНрдгрдорд╛рд▓рд╛ (рдпрд╛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ) рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рдХреНрд░рдо рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0, 1, 2, 5, 3, 3, 0 рдФрд░ рдЖрдкрдХреЛ рдЗрди рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд░рдореЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд╣рдЬ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдХрдард┐рди рднреА, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдЬрдм рд╣рдо рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░реЗ, рддреАрд╕рд░реЗ, рдЖрджрд┐ рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рдПрди!) рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЕрдЧрд▓реЗ рдХреНрд░рдордЪрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрдХреНрд░рдо - (0, 1, 2, 5, 3, 3, 0) рд▓реЗрдВред рдЕрдиреБрдХреНрд░рдо рдХреЛ рдореВрд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХрд░реАрдм рд╣реИред рдЬреЛ рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдирдЬрджреАрдХреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЖрджрд┐ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛:

  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЧреИрд░-рдмрдврд╝рддреА рдкреНрд░рддреНрдпрдп рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд╣реЛрдЧрд╛ - (5, 3, 3, 0)ред рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рдХреЛрдИ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореВрд▓ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
    рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЛ O (n) рд╕рдордп рдореЗрдВ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдХреНрд░рдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдкреНрд░рддреНрдпрдп рд╕реЗ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рдзреБрд░реА рдмрд┐рдВрджреБ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ 2. рдзреБрд░реА рдмрд┐рдВрджреБ рд╣рдореЗрд╢рд╛ рдкреНрд░рддреНрдпрдп рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реЗ рдХрдо рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпрдп рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдзреБрд░реА рдмрд┐рдВрджреБ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рддрддреНрд╡ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдЧрд░ рд╣рдо рдзреБрд░реА рдмрд┐рдВрджреБ рдХреЛ рдзреБрд░реА рдмрд┐рдВрджреБ рд╕рдорд░реНрдерди рддрддреНрд╡ рд╕реЗ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпрдп рд╕реЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рддрддреНрд╡ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ - рддреЛ рд╣рдореЗрдВ рдореВрд▓ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдорд┐рд▓реЗрдЧрд╛ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛ (0, 1, 3, 5) , 3, 2, 0)ред
    рдпрд╛рдиреА рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рдЖрд░реЛрд╣реА рдЙрдкрд╕рд░реНрдЧ рд╣реЛрдЧрд╛ред
  3. рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░рддреНрдпрдп рдХреЛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛рдиреА рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдкреНрд░рддреНрдпрдп рдорд┐рд▓рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ (0, 2, 3, 5) рд╣реЛрдЧрд╛ рдФрд░ рдкреВрд░рд╛ рдХреНрд░рдо (0, 1, 3, 0, 2, 3, 5) рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред


рдпрд╣ рдорд╛рди рдЕрдЧрд▓реА lexicographic рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд╛ рд╣реЛрдЧреАред

рдЫрд╡рд┐

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд╕рднреА рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдЙрдмреЗрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдиреНрдпрдерд╛ рд╕реЛрдЪрд╛ рдерд╛ :))

рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдХреЛрдб рдЧреЛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

PYXRU рдФрд░ 646f67 рдХреЗ рд▓рд┐рдП рдХрдИ рдзрдиреНрдпрд╡рд╛рдж рдореБрдЭреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдирд╛рдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдмрд╕ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░рддреНрдпрдп рдХрд░рдХреЗ рд░реИрдЦрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордЪрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


func NextPermutationAlgorithm(w string) string { l := len(w) b := []byte(w) r := "no answer" for i:=l-1; i>0 ; i--{ if b[i-1] < b[i] { pivot := i for j := pivot; j < l; j++ { if b[j] <= b[pivot] && b[i-1] < b[j] { pivot = j } } b[i-1], b[pivot] = b[pivot], b[i-1] for j := l-1; i < j; i, j = i+1, j-1 { b[i], b[j] = b[j], b[i] } r = string(b) break } } return r } 

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


All Articles