python 2.7 hackerearth中的nzec错误

时间:2018-03-20 11:09:54

标签: python

def selsort(l):
  for start in range(len(l)):
    pos = start
    for i in range(start,len(l)):
      if l[i] < l[pos]:
        pos = i                     
    l[pos],l[start]=l[start],l[pos] 
  return(l)

N = int(raw_input())
l = selsort([int(x) for x in(raw_input().split())])
num_of_keys = int(raw_input())
key_size = [int(x) for x in (raw_input().split())]   

f_list = [[] for x in range(num_of_keys)]  
pos = -1

for i in range(len(key_size)):
  for j in range(num_of_keys): 
    if len(f_list[j]) < key_size[j]:
      f_list[j].append(l[pos])
      pos = pos -1 


steps_required = 0
for i in range(num_of_keys):
  for j in range(key_size[i]):
    steps_required = steps_required + f_list[i][j]*(j+1) 

#     print steps_required

上面的代码给出了运行时错误:使用python 2.7的NZEC。怎么解决这个问题。 https://www.hackerearth.com/practice/algorithms/sorting/selection-sort/practice-problems/algorithm/old-keypad-in-a-foreign-land-24/

1 个答案:

答案 0 :(得分:-1)

我尝试使用链接网站的示例代码

def selsort(l):
  for start in range(len(l)):
    pos = start
    for i in range(start,len(l)):
      if l[i] < l[pos]:
        pos = i                     
    l[pos],l[start]=l[start],l[pos] 
  return(l)

N = 4
l = selsort([7, 3, 4, 1])
num_of_keys = 2
key_size = [1,3]

f_list =[[] for x in range(num_of_keys)]  
pos = -1

for i in range(len(key_size)):
  for j in range(num_of_keys): 
    if len(f_list[j]) < key_size[j]:
      f_list[j].append(l[pos])
      pos = pos -1 

print(f_list)

steps_required = 0
for i in range(num_of_keys):
  for j in range(key_size[i]):
    steps_required = steps_required + f_list[i][j]*(j+1) 

我认为密钥的分配是错误的。

for j in range(max(key_size)):
    for i in range(num_of_keys):
        if(len(f_list[i])>=key_size[i]):
            continue
        f_list[i].append(l[pos])
        pos=pos-1

因此索引错误已解决

相关问题