AlexG2230954

27. Без словаря

Jun 24th, 2021 (edited)
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. arr = [140, 9, -3, -1, 76, -7, 4, 73]
  2.  
  3. s = [[0, 0]] #список предыдущих подпоследовательностей
  4. min_len = 0 #минимальная длина подпоследовательности, содержащей макс. сумму
  5. max_sum = 0 #максимальная сумма подпоследовательности
  6.  
  7. for num in arr:
  8.     #генерируем нынешнее подпоследовательности с текущим числом
  9.     s = [[last_sum + num, last_len + 1] for last_sum, last_len in s]
  10.     s.append([num, 1]) #также добавим случай, когда в подпоследовательности будет только 1 число (мы с тобой этот момент разбирали)
  11.  
  12.     for current_sum, current_len in s: #теперь проверим все текущие подпоследовательности
  13.        
  14.         if current_sum % 73 == 0:
  15.             if current_sum > max_sum:
  16.                 max_sum = current_sum
  17.                 min_len = current_len #т. к. на данный момент иных последовательностей еще не найдено
  18.            
  19.             elif current_sum == max_sum and current_len < min_len:
  20.                 min_len = current_len
  21.  
  22. print(min_len)
Add Comment
Please, Sign In to add comment