浙江pathon高考

不太明白这个算法,怎么做到倒退增加新stack的。レ(゚∀゚;)ヘ=З=З=₍˄·͈༝·͈˄*₎◞ ̑̑(´I`)(˵¯͒〰¯͒˵)(˃ ⌑ ˂ഃ )

img

关键在于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