跳转至

餐厅点菜

题目描述

餐厅里有n种菜,第i中卖pi元,每种菜最多只能点一份。现在打算花光m元。请问有几种点菜方式?

输入描述

输入共2行:

第1行,2个正整数n,n,以空格隔开。

第2行,n个正整数p1,p2,p3,...,pn,以空格隔开。

输出描述

一个正整数,表示点菜方式的种树

样例输入

4 5

1 2 3 4

样例输出

2

代码详解

展开查看
n,m = [int(i) for i in input().split()]
p = [int(i) for i in input().split()]
use = [False for i in range(n)]
cnt = 0

def dfs(step):
    global n,m,p,use,cnt
    if step >= n:
        to = 0
        for i in range(n):
            if use[i] == True:
                to += p[i]
        if to == m:
            cnt += 1
        return
    use[step] = False
    dfs(step+1)
    use[step] = True
    dfs(step+1)

dfs(0)
print(cnt)

运行结果

展开查看
4 5
1 2 3 4
2