몬스터를 죽이기 위해 두 개의 건 A와 B를 사용해야합니다 (N 개의 머리 포함). 총 A를 사용하면 6 개의 머리를 자르지 만 몬스터가 죽지 않으면 (머리가 0이 아닌) 머리가 3 개 커집니다. 총 B를 사용하면 4 개의 머리를 자르지 만 몬스터가 죽지 않으면 머리가 두 개 커집니다. N < (총을 절단 할 수있는 헤드 수)이 아닌 경우 총을 사용할 수 없습니다. 그리고 N = -1이면 괴물과 사냥꾼이 모두 죽습니다.파이썬의 몬스터 헤드 문제
몬스터를 죽일 수 있는지, 사냥꾼이 몬스터와 최단 경로를 죽이려 고 죽을 지 여부를 알아내는 것이 문제로 요구됩니다.
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, [])
샘플 데이터 (질문에 의해 제공) :
I은 상기 과제를 해결하기 위해 다음 파이썬 프로그램을 작성한 N = 10, 최단 경로 AAB이다.
프로그램에서 내가 잘못 가고이 문제를 해결하는 데 더 좋은 방법은 무엇입니까?
숙제? 면접 질문? 개발 한 솔루션에 어떤 문제점이 있습니까? –
숙제 또는 면접 질문 :) 그냥 내 호기심을 사로 잡았 어! 내가 겪고있는 문제에 관해서는, 표시된 경로가 정확하지 않다는 것입니다. –
잘못된 결과가 무엇인지 보여주는 것이 좋습니다. 사람들이 직접 프로그램을 실행하지 않아도 문제를 해결할 수 있습니다. –