对于以下问题:小张同学通过了 GESP 认证后,立刻拉着好朋友小李到了一家餐馆。小张指着墙上的价目表说:“随便点”。不过小李同学由于买了一些书,口袋里只剩 m 元 (0<≤100000<m≤10000)。餐馆虽低端,但是菜品种类不少,有 n 种 (0<≤1000<n≤100) 菜品,第 𝑖i 种菜品卖 ai 元(0<≤10000<ai≤1000)。由于是很低端的餐馆,所以每种菜只有一份。小李奉行“不把钱吃光不罢休”,所以他点单一定刚好把小张同学身上所有钱花完。他想知道有多少种点菜方法。下面给出了一段不完整的程序实现,在空缺处填入()可以解决问题。
using namespace std;
const int MAXN = 10000 + 10;
int a[MAXN], f[MAXN];
int main()
{
int n, m;
cin >> n >> m;
f[0] = 1;
for (int i = 1; i <= n; ++i)
cin >> a[i];
for (int i = 1; i <= n; ++i)
// 填补空缺
cout << f[m] << endl;
return 0;
}