ударил raintrap в питоне - PullRequest
       2

ударил raintrap в питоне

0 голосов
/ 28 августа 2018
a = [3,0,0,2,0,4]       #input
l = []                  #left side 
r = []                  #right side
sum = 0                 #output
l[0] = a[0]             #loading a[0] into l[0]
for i in range(len(a)):     #finding left tallest
   l[i] = max(a[i],l[i-1])  #finding maximum and adding into left list
r[n-1] = a[n-1]             # loading the elements from last into right list 
for i in range(len(n-2)):   #finding right tallest
   r[i] = max(a[i],l[i+1])  #finding maximum and adding into right list
for i in range(0,len(n)):       
   sum = sum + (min(l[i],r[i])-a[i]*1)      #sum of inputs
print(sum)

Ожидается выходная сумма = 10 3x2 + 1x1 + 1x3 = 10

обновлен код предыдущего.

def findwater(a,n):                     
left = [0]*n                    
right = [0]*n                   
sum = 0                 
left[0] = a[0]          
for i in range(1,n):    
    left[i] = max(left[i-1],a[i])   
right[n-1] = a[n-1]
for i in range((n-2),-1,-1):    
    right[i] = max(right[i+1],a[i])
for i in range(0,n):        
    sum = sum + (min(left[i],right[i])-a[i]*1)      
return sum

a = [3,0,0,2,0,4]   
n = len(a)
print(findwater(a,n))

На этот раз я получаю эту ошибку left [i] = max (left [i-1], a [i]) TypeError: объект 'int' не может быть вызван Помогите мне исправить мой код.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

У вас есть несколько проблем с вашим кодом.

  1. Имена переменных могут быть более информативными l -> left_side. Таким образом, вам не нужно комментировать каждую строку.
  2. Вы используете переменную n, которая ни к чему не инициализируется.
  3. Возможно, разделите ваш код на несколько функций. Затем вы можете проверить, выполняет ли каждая функция то, что должна.

Первая проблема под рукой - в строке 5. Вы делаете l[0] = ... Проблема в том, что l - пустой список, поэтому вы не можете получить доступ к элементу [0], поэтому вы получаете ошибку.

Вместо этого вы можете добавить элемент к l:

l.append(a[0])
0 голосов
/ 28 августа 2018

Строка 8: r[n-1] = a[n-1], r длина равна 0, а n неинициализирован, поэтому я думаю, что ваша ошибка, вероятно, здесь.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...