爆搜做的,结果死循环了,还没改,摆烂了
应该是dp做
#include <bits/stdc++.h>
using namespace std;
int n, m;
int cur;
int i;
int num = 0;
int a[101];//存菜的价格
//先点一道菜,如果没有超出,就点下一个,
//超出了就退回到上一级,在点下一个
//当点到m时,退回到上一次,然后再往下点菜
//有点像dfs
int dfs(int x, int cur) { //表示点第几个菜
if (x > n)
return 0;
if (cur == a[x]) {
num++;
dfs(x + 1, cur);
}
if (cur < a[x]) {
dfs (x + 1, cur);
}
if (cur > a[x]) {
dfs(x + 1, cur - a[x]);
dfs(x + 1, cur);
}
return 0;
}
int main() {
cin >> n >> m;
for (i = 1; i <= n; i++)
cin >> a[i];
dfs(1, m);
cout << num;
}