不太明白这个算法,怎么做到倒退增加新stack的。レ(゚∀゚;)ヘ=З=З=₍˄·͈༝·͈˄*₎◞ ̑̑(´I`)(˵¯͒〰¯͒˵)(˃ ⌑ ˂ഃ )
关键在于while循环里的 if 语句的stack.pop()实现了回退。使用单步调试就可以理解了。
有几个空填写不太正确,建议做以下修改再试试:
while stack or i<n:
while t>0 and i<n:
if t>=int(pricelist[i]):
stack.append(i)
t-=int(pricelist[i])
i+=1
if t==0:
print("取序号为",stack,"的物品")
num+=1
if i==n:
i=stack.pop()
t+=int(pricelist[i])
i+=1