int dp(int S){
int& ans = d[S];
if(ans != -1) return ans;
ans = -(1<<30);
for(int i = 1; i <= n; i++)
if(S >= V[i])
ans = max(ans, dp(S-V[i])+1);
return ans;
}
也可以像DFS那樣加一個visited[]數(shù)組代表是否訪問過。
int dp(int S){
int& ans = d[S];
if(ans != -1) return ans;
ans = -(1<<30);
for(int i = 1; i <= n; i++)
if(S >= V[i])
ans = max(ans, dp(S-V[i])+1);
return ans;
}
也可以像DFS那樣加一個visited[]數(shù)組代表是否訪問過。