Mostro teste di problema in Python
-
29-10-2019 - |
Domanda
Due pistole A e B devono essere usate per uccidere un mostro (con n teste). Quando viene utilizzata la pistola A taglia 6 teste, ma se il mostro non muore (no di teste> 0), farà crescere 3 teste. Quando viene utilizzata la pistola B taglia 4 teste ma se il mostro non muore cresce 2 teste. Se n <(n. Di testa la pistola può tagliare), in quel caso la pistola non può essere utilizzata. E se n = -1, sia il mostro che il cacciatore muore.
È necessario dal problema per scoprire se è possibile uccidere il mostro, se il cacciatore muore cercando di uccidere il mostro e il percorso più breve.
Ho scritto il seguente programma Python per risolvere il problema sopra:
def A(heads, path):
if heads < -1:
path = []
return "Impossible to kill"
heads -= 6
path.append("A")
if heads == 0:
print path
path = []
return "Monster dies"
if heads == -1:
return "Both monster and human die"
heads += 3
if A(heads, path)=="Monster dies" or B(heads, path) == "Monster dies":
return "Monster dies"
def B(heads, path):
if heads < -1:
path = []
return "Impossible to kill"
#print "B", path, heads
heads -= 4
path.append("B")
if heads == 0:
print path
path =[]
return "Monster dies"
if heads == -1:
return "Both monster and human die"
heads += 2
if A(heads, path)=="Monster dies" or B(heads, path) == "Monster dies":
return "Monster dies"
print A(10, [])
Dati di esempio (forniti dalla domanda): per n = 10, il percorso più breve è AAB.
Dove nel programma sono andato storto e qual è un metodo migliore per affrontare questo problema?
Nessuna soluzione corretta