wa掉了8和10,看了下第八题,正确答案几千,我的输出九位数,我尝试开longlong答案更离谱,输出的十多位的负数。。我是看不出来哪里有毛病,求求各位大佬帮助,感谢!
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> num;
int cache[101][10001];
bool vis[100][10001];
int dfs(int now,int money)
{
if(now == n && money > 0)
return 0;
if(vis[now][money])
return cache[now][money];
int sum = 0;
for(int i = now;i < n;i++)
sum += dfs(i + 1,money - num[i]);
cache[now][money] = sum,vis[now][money] = 1;
return sum;
}
int main()
{
cin >> n >> m;
num.resize(n);
for(int i = 0;i < n;i++)
cin >> num[i];
for(int i = 0;i <= n;i++)
vis[i][0] = cache[i][0] = 1;
cout << dfs(0,m);
}