рдиреМрдХрд░реА рдХреЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрд╡рд▓реЛрдХрди - рд╕реЗрдЯ рдЬрдирд░реЗрд╢рди

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!


рдпрд╣ рдкреЛрд╕реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмрдбрд╝реА рдЖрдИрдЯреА рдХрдВрдкрдирд┐рдпреЛрдВ (Mail.Ru Group, Google, рдЖрджрд┐) рдХреЛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рд╣реИ (рдпрджрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рд╕рдкрдиреЗ рдХреА рдХрдВрдкрдиреА рдореЗрдВ рдиреМрдХрд░реА рдкрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛, рдЕрдлрд╕реЛрд╕ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ)ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкреЛрд╕реНрдЯ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдУрд▓рдВрдкрд┐рдпрд╛рдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдпрд╛ рд╢рд╛рдж рдпрд╛ рдПрд▓рдХреЗрдПрд╕ рдЬреИрд╕реЗ рднрд╛рд░реА рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдЗрд╕реА рд╕рдордп, рдпрд╣ рддрд░реНрдХ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдирд┐рдкрдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред



рд╡рд┐рд╡рд░рдг рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред


1. рдЪрд▓реЛ рдмрдЯрди рд╕рдордЭреМрддреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рдЖрдкрдХреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреНрд░реИрдХреЗрдЯ ( рдХреНрдпрд╛ рд╕рд╣реА рдмреНрд░реИрдХреЗрдЯ рдЕрдиреБрдХреНрд░рдо рд╣реИ ) рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рд╣реА рдмреНрд░реИрдХреЗрдЯ рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреЛрд╖реНрдардХ рдХреА рд╕рдВрдЦреНрдпрд╛ k рд╣реИред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдпрд╣ рд╡рд┐рдзрд┐ рдорд╛рдирддреА рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рд╕реЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмреНрд░реИрдХреЗрдЯ (рдЦреБрд▓рдиреЗ рдпрд╛ рдмрдВрдж рд╣реЛрдиреЗ) рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдкреБрди: рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╢рд░реНрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдХреНрдпрд╛ рд╢рд░реНрддреЗрдВ рд╣реИрдВ? рдмреНрд░реИрдХреЗрдЯреНрд╕ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ( cnt рд╡реИрд░рд┐рдПрдмрд▓) - рдпрджрд┐ рдЖрдк рдпрд╣ рдЕрдВрддрд░ рдкреЙрдЬрд┐рдЯрд┐рд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ, рдЕрдиреНрдпрдерд╛ рдмреНрд░реИрдХреЗрдЯ рдЕрдиреБрдХреНрд░рдо рд╕рд╣реА рдирд╣реАрдВ рд░рд╣реЗрдЧрд╛ред рдХреЛрдб рдореЗрдВ рдЗрд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред


 k = 6 #   init = list(np.zeros(k)) #  ,    cnt = 0 #    ind = 0 # ,       def f(cnt, ind, k, init): #  . ,     if (cnt <= k-ind-2): init[ind] = '(' f(cnt+1, ind+1, k, init) # .    ,  cnt > 0 if cnt > 0: init[ind] = ')' f(cnt-1, ind+1, k, init) #      if ind == k: if cnt == 0: print (init) 

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O((Ckk/2тИТCkk/2тИТ1)тИЧk)рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ O(k)ред


рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ f(cnt,ind,k,init)рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрдкрд╛рджрди рд╣реЛрдЧрд╛:



рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рддрд░реАрдХрд╛: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛ - рдЖрдкрдХреЛ рдмреНрд░реИрдХреЗрдЯ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рдСрд░реНрдбрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЛрд╖реНрдардХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рд╣реА рд▓рдШреБрдХреЛрд╖реНрдардХ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ тА▓(тА▓<тА▓)тА▓ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, n = 6 рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдЪрд▓рд╛ рдХреНрд░рдо рд╣реИ ((()))рдФрд░ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ - ()()ред


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


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


 #  ,    n = 6 arr = ['(' for _ in range(n//2)] + [')' for _ in range(n//2)] def f(n, arr): #    print (arr) while True: ind = n-1 cnt = 0 #  . ,    while ind>=0: if arr[ind] == ')': cnt -= 1 if arr[ind] == '(': cnt += 1 if cnt < 0 and arr[ind] =='(': break ind -= 1 #   ,     if ind < 0: break #   .  arr[ind] = ')' #      for i in range(ind+1,n): if i <= (n-ind+cnt)/2 +ind: arr[i] = '(' else: arr[i] = ')' print (arr) 

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИред


рд╡реИрд╕реЗ, рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП n / 2 рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдмреНрд░реИрдХреЗрдЯ рдЕрдиреБрдХреНрд░рдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреИрдЯрд▓рди рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!


рдорд╣рд╛рди, рдЕрдм рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдХреЗ рд╕рд╛рде, рдЪрд▓реЛ рд╕рдмрд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдПрдХ рд╕рд░рд▓ рдкрд╣реЗрд▓реА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


2. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд░реЛрд╣реА рдХреНрд░рдо рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП 0рдХреЛ nтИТ1, рдпрд╣ рдЕрдкрдиреЗ рд╕рднреА рд╕рдмрд╕реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╣реИ 2рдПрдиред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрд╕реЗрдЯ рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ 0рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддрддреНрд╡ рд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 1- рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рддреЛ рдРрд╕реА рд╕рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдкреАрдврд╝реА рд╕рднреА рд╕рдмрд╕реЗрдЯ рдХреА рдкреАрдврд╝реА рд╣реЛрдЧреАред


рдпрджрд┐ рд╣рдо 0 рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ 2nтИТ1, рддреЛ рд╡реЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдмрд╕реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рдЗрдирд░реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХрддрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдо рд╕рднреА рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред


 n = 3 B = np.zeros(n+1) #  B   1  (    ) a = np.array(list(range(n))) #   def f(B, n, a): #   while B[0] == 0: ind = n #     while B[ind] == 1: ind -= 1 #   1 B[ind] = 1 #      B[(ind+1):] = 0 print (a[B[1:].astype('bool')]) 

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O(nтИЧ2n), рдореЗрдореЛрд░реА рд╕реЗ - O(n)ред


рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред


рдЕрдм рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред


3. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП 0рдХреЛ nтИТ1, рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ k-рд╕реАрдореЗрдВрдЯ рд╕рдмреНрдорд┐рдЯ (рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣рд▓)ред


рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реВрддреНрд░реАрдХрд░рдг рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд░рдгреА рдХреЛ рд╕рд╛рде рд▓реЗ рдЬрд╛рдПрдВ kрдЗрдХрд╛рдЗрдпреЛрдВ рдФрд░ рдПрдитИТрдХреЗрд╢реВрдиреНрдп рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╛рдИ рдХреЗ рдРрд╕реЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрди


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ kрд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕реЗрдЯ рд╕реЗрдЯ 0рдХреЛ nтИТ1ред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рдмрд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдРрд╕реЗ рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рдСрд░реНрдбрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рдо рд╡рд░реНрдг рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдо рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рднреА рдХрд░рддреЗ рд╣реИрдВ: 1<0(рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЕрдм рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпреЛрдВ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗ рд▓рд┐рдП n=4,k=2рд╕рдмрд╕реЗ рдХрдо рдЙрдореНрд░ рдФрд░ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдЕрдиреБрдХреНрд░рдо рд╣реЛрдЧрд╛ [1,1,0,0]рдФрд░ [0,0,1,1]ред


рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдПрдХ рдХреНрд░рдо рд╕реЗ рджреВрд╕рд░реЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рд╣рдо рдмрджрд▓рддреЗ рд╣реИрдВ 1рдкрд░ 0, рдлрд┐рд░ рдмрд╛рдИрдВ рдУрд░ рд╣рдо рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдиреНрдпреВрдирддрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ kред рдХреЛрдб:


 n = 5 k = 3 a = np.array(list(range(n))) #    k -   init = [1 for _ in range(k)] + [0 for _ in range(nk)] def f(a, n, k, init): #   k-  print (a[a[init].astype('bool')]) while True: unit_cnt = 0 cur_ind = 0 #   ,     1 while (cur_ind < n) and (init[cur_ind]==1 or unit_cnt==0): if init[cur_ind] == 1: unit_cnt += 1 cur_ind += 1 #        -    if cur_ind == n: break #  init[cur_ind] = 1 #   . .  for i in range(cur_ind): if i < unit_cnt-1: init[i] = 1 else: init[i] = 0 print (a[a[init].astype('bool')]) 

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг:



рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O(CnkтИЧn), рдореЗрдореЛрд░реА рд╕реЗ - O(n)ред


4. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд░реЛрд╣реА рдХреНрд░рдо рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП 0рдХреЛ nтИТ1, рдЖрдкрдХреЛ рдпрд╣ рд╕рдм рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ k-рд╕реАрдореЗрдВрдЯ рд╕рдмрд╕реЗрдЯ (рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣рд▓ рдХрд░реЗрдВ)ред


рдЕрдм рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ: рдЗрд╕ рдмрд╛рд░ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛, рдХреЛрдб рджреЗрдЦреЗрдВред


 n = 5 a = np.array(list(range(n))) ind = 0 # ,       num = 0 # ,       k = 3 sub = list(-np.ones(k)) #  def f(n, a, num, ind, k, sub): #   k  ,     if ind == k: print (sub) else: for i in range(n - num): #  ,      k  if (n - num - i >= k - ind): #      sub[ind] = a[num + i] #     f(n, a, num+1+i, ind+1, k, sub) 

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг:


рдЬрдЯрд┐рд▓рддрд╛ рдкрд┐рдЫрд▓реЗ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИред


5. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд░реЛрд╣реА рдХреНрд░рдо рд╕рд░рдгреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП 0рдХреЛ nтИТ1, рдпрд╣ рдЕрдкрдиреЗ рд╕рднреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рд╕рдорд╛рдзрд╛рди рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╕реВрдЪреА рд╣реИред рдпрджрд┐ рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рд╢реВрдиреНрдп рд╣реИ рдореИрдВ-рддрддреНрддреНрд╡ рдХрд╛ рдПрдХ рд╕реНрдерд╛рди рд╣реИ, рддрддреНрддреНрд╡ рдореИрдВрдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд░рдордЪрдп рдореЗрдВред рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛:


 a = np.array(range(3)) n = a.shape[0] ind_mark = np.zeros(n) #   perm = -np.ones(n) #     def f(ind_mark, perm, ind, n): if ind == n: print (perm) else: for i in range(n): if not ind_mark[i]: #     ind_mark[i] = 1 #   perm[ind] = i f(ind_mark, perm, ind+1, n) #   -    ind_mark[i] = 0 

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг:



рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O(n2тИЧn!), рдореЗрдореЛрд░реА рд╕реЗ - O(n)ред


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


6. рд▓рдВрдмрд╛рдИ рдПрди рдХреЗ рд╕рднреА рджреЛ рдЖрдпрд╛рдореА рдЧреНрд░реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реЛрдЪрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд┐рддрдиреА рд╣реИ 2рдПрдиред


рд╣рдо рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡реЗ рдХрд┐рд╕реА рд╕реВрдЪреА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдпрджрд┐ рд╣рдо рдРрд╕реА рд╕реВрдЪреА рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реА рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрдиреБрдХреНрд░рдо рджреВрд╕рд░реА рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдПрдВред


рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдЕрдиреБрдХреНрд░рдо рдПрдХ рд╣реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдВ? рдЧреНрд░реЗ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рд░рдЦреЛред


"рдХрд╛рди рд╕реЗ" рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ; рд╣рдо рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред



 n = 3 init = [list(np.zeros(n))] def f(n, init): for i in range(n): for j in range(2**i): init.append(list(init[2**i - j - 1])) init[-1][i] = 1.0 return init 

рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O(nтИЧ2n), рд╕реНрдореГрддрд┐ рд╕реЗ рд╣реАред


рдЕрдм рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред


7. рд▓рдВрдмрд╛рдИ n рдХреЗ рд╕рднреА k- рдЖрдпрд╛рдореА рдЧреНрд░реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓рд╛ рдХрд╛рд░реНрдп рдЗрд╕ рдХрд╛рд░реНрдп рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрд╕ рдЦреВрдмрд╕реВрд░рдд рддрд░реАрдХреЗ рд╕реЗ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪрд▓реЛ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ kтИЧnред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЗрдХрд╛рдЗрдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рдореЗрдВ рд╢реВрдиреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ, тИТ1ред рдпрд╣рд╛рдВ 1рдФрд░ тИТ1рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рджрд┐рд╢рд╛ рдореЗрдВ: 1рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ тИТ1рдиреАрдЪреЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдХрд┐рд╕реА рднреА рд╕рдордп рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ 1рдпрд╛ тИТ1, рдФрд░ рд╢реЗрд╖ рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реЛрдЧреАред



рдЕрдм рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдЧреНрд░реЗ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдХреИрд╕реЗ рдЫрд╛рдВрдЯрдирд╛ рд╕рдВрднрд╡ рд╣реИред рддрддреНрд╡ рдХреЛ рдКрдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред



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



рдЕрдм рдЖрдк рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХреЛ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рддрдм рддрдХ рд╣рд┐рд▓рд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдлрд░реНрд╢ рд╕реЗ рди рдЯрдХрд░рд╛рдПред рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рд╕рднреА рддреАрд░ рдлрд░реНрд╢ рдпрд╛ рдЫрдд рд╕реЗ рдирд╣реАрдВ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рд╕реНрддрдВрдн рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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


 n,k = 3,3 arr = np.zeros(n) direction = np.ones(n) #   ,    def k_dim_gray(n,k): #    print (arr) while True: ind = n-1 while ind >= 0: #    ,    if (arr[ind] == 0 and direction[ind] == 0) or (arr[ind] == k-1 and direction[ind] == 1): direction[ind] = (direction[ind]+1)%2 else: break ind -= 1 #     ,     if ind < 0: break #    1 ,   1  arr[ind] += direction[ind]*2 - 1 print (arr) 

рдХрд╛рд░реНрдп рдЙрджрд╛рд╣рд░рдг:



рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ O(nтИЧkn), рдореЗрдореЛрд░реА рд╕реЗ - O(n)ред


рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╢реБрджреНрдзрддрд╛ рдкрд░ рдкреНрд░реЗрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рд┐рджреНрдз рдХреА рдЬрд╛рддреА рд╣реИ рдПрди, рдпрд╣рд╛рдБ рдореИрдВ рд╕рдмреВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ред


рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо рдЧрддрд┐рдХреА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред

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


All Articles