다음 '트리 크기 조절기'를 구현했지만 특정 조건에서 실패합니다. 예를 들어 크기가 4 인 경우 크기 2가 반환되고 아무도 나를 도와 줄 수 없습니다. 나는이 소책자를 여러 번 쓰면서 쓸데없이 실패했다. 미리 감사RPN 트리 크기 가져 오기
JC
def getRPNdepth(expression):
treesize=0
maxtreesize=treesize
mintreesize=treesize
tmpexp=expression
tmpfmla = [1 if n[0] == 'x' else n for n in tmpexp]
print(tmpfmla)
try:
stack = []
for val in tmpfmla:
if val in ['-', '+', '*', '/']:
op1 = stack.pop()
op2 = stack.pop()
if val == '-': result = op2 - op1
if val == '+': result = op2 + op1
if val == '*': result = op2 * op1
if val == '/':
if op1 == 0:
result = 1
else:
result = op2/op1
stack.append(result)
treesize=treesize+1
else:
stack.append(float(val))
treesize = treesize - 1
if treesize>maxtreesize:
maxtreesize=treesize
if treesize<mintreesize:
mintreesize=treesize
return abs(mintreesize)
except:
print('error validate rpn>' + str(expression))
return 0
xxxx = ['x6', 'x7', '+', 'x7', '+', 'x7', '+', 'x7', '+']
print(getRPNdepth(xxxx))
몇 가지 예 : [ '1', '1', '+', '1', '1', '+', '+'] [ '1', '1', '1', '+', '+'] 둘 다 3의 결과를 제공하지만 정확합니다. 은 3 일 때 3을 반환합니다. 4
모두 알아야 할 사항은 다음과 같습니다. 캐릭터 라인 표현으로부터의 RPN의 깊이
'나무의 크기는'무엇입니까? 일반적으로 같은 값으로 mintreesize 및 maxtreesize를 초기화하면 안됩니다. – Jett
내가 트리 크기라고 부르는 것은 트리의 깊이입니다. –
mittreesize와 maxtreesize는 나무가 '측정'되지 않았기 때문에 같은 값으로 초기화됩니다. –