砝码称量

提交数: 197, 通过率: 56.35%, 平均分: 78.58

题目描述:

在实验室的架子上存放着一排重量不等的砝码( 从0位置上开始摆放),在做实验的过程中,需要使用砝码称量一定量的物品质量,例如称取10g的高锰酸钾,则可以使用一个10g或者 两个3 和7的砝码进行称取。

现给定一个物品的重量,问有多少种拿取成砝码的方案?

输入格式:

第一行一个数,表示物品的重量。

第二行给定若干个从0位置开始摆放的砝码重量,用逗号隔开。

输出格式:

依次输出各种拿取的方案。

各方案按位置小的优先输出。

如果没有拿取的方案,那么输”No“。

样例输入:

35
1,3,5,9,10,15,18,20

样例输出:

0 2 3 7
0 3 4 5
1 2 3 6
2 4 7
5 7

提示:

物品重量小于100,砝码的个数不多于20个。

def weigh( t, lis ) :
    n = len( lis )
    stack = [ ]
    k = 0
    c = 0
    while stack or k < n:
        while t>0 and k < n:
            if t >= int(lis[k] ):
                stack.append(k)
                t = ________(1)_________
            k += 1
            if t == 0:
                print( *stack, sep = ' ' )  #解包输出,空格隔开
                c = 1
        if  ______(2)______:
            k = stack.pop()
            t += int( lis[ k ] )
        k += 1
    if ______(3)_______:
        print("No")

m = int( input() )
fm = input()
shelf = ______(4)_______  #将输入的内容,转换成列表
weigh( m , shelf )
时间限制: 1000ms
空间限制: 256MB