Я пытаюсь решить проблему выделения в Google Kick Start https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f56.
Извините за португальские комментарии, но мой код работает просто отлично, он получает правильные awnsers с образцами:
- 3
- 4 100
- 20 90 40 90
- 4 50
- 30 30 10 10
- 3 300
- 999 999 999
Я решил использовать Spyder, я не знаю, в этом ли проблема. Мой вход получает все числа в виде строки, например "20 90 40 90", может в этом проблема? Вот код:
def ncasas(nb, casas):
nb = nb.split()
casas = casas.split()
B = int(nb[1])
resp = 0
casas_ = casas.copy()
casas_verificado = []
#=======Remove as casas acima do Budget===============
for casa in casas:
if ( (int(casa) >= B) and (casa in casas_) ):
casas_.remove(casa)
#=====================================================
#========Deixa a lista com inteiros================
for casa in casas_:
casas_verificado.append( int(casa) )
#=====================================================
casas_verificado.sort() #Deixa em ordem crescente
#==Se o budget compra da direita para a esquerda==
i = 1
while(True):
if ( sum(casas_verificado[:-i]) <= B ):
resp = len(casas_verificado[:-i])
break
i += 1
return(resp)
#==================================================================
t = int(input('Digite o numero de casos: '))
cont = 1
while(cont <= t):
nb = input('Digite o número de casas e o budget: ')
casas = input('Digite o valor das casa: ')
print('Case #%i: %i' % (cont, ncasas(nb, casas)) )
cont += 1
Мой ввод неверен? Мой вывод неверен? Я новичок в программировании, но хотел бы делать больше подобных кодовых джемов.