我想的是将dfs函数看作最大结局方案数,可这样为什么不对呢,样例都没过
#include<bits/stdc++.h>
using namespace std;
int dp[10003];
int M,N,a[103];
int ans = 0;
int dfs(int k,int rest)
{
if(rest == 0)return 1;
else if(rest < 0||k > N)return 0;
if(dp[rest]==-1)dp[rest] = max(dfs(k+1,rest-a[k]),dfs(k+1,rest));
else
return dp[rest];
}
int main()
{
cin >> N >> M;
for(int i = 1;i <= N;i++)
cin >> a[i];
for(int i = 1;i <= M;i++)
dp[i] = -1;
cout << dfs(1,M);
return 0;
}