2585. 获得分数的方法数
思考:本题本质是分组背包问题。状态dp[i]表示得分为i的方法数。这里不可以用二进制进行优化,因为同类型题目无法区分,会造成记的次数变多。
AcWing算法基础课——第五讲 动态规划 之 背包问题
(dp+多重背包+二进制优化+GOOD) acwing 5. 多重背包问题 II
class Solution {
public:
int waysToReachTarget(int target, vector<vector<int>>& types) {
int mod=1e9+7;
int dp[1010];
memset(dp,0,sizeof dp);
dp[0]=1;
for(int i=0;i<types.size();i++){
for(int j=target;j>0;j--){
for(int k=1;k<=types[i][0];k++){
if(j-k*types[i][1]>=0) dp[j]=(dp[j]+dp[j-k*types[i][1]])%mod;
}
}
}
return dp[target];
}
};