0
点赞
收藏
分享

微信扫一扫

lc-2585

陆佃 2024-06-21 阅读 13

public int waysToReachTarget(int target, int[][] types) {

        int n = types.length;
        int mod = 1_000_000_007;
        int max = 0;
        for (int i = 0; i < n; i++) {
            max = Math.max(max, types[i][0]);
        }
        int[][] dp = new int[2][target + 1];
        dp[0][0] = 1;
        int mask = 1;
        for (int i = 0; i < n; i++) {
            int maxScore = types[i][0] * types[i][1];
            for (int j = 0; j <= target && j <= maxScore;  j += types[i][1]) {
                for (int k = j; k <=target ; k++) {
                    dp[mask][k] = (dp[mask][k] + dp[mask ^ 1][k - j]) % mod;
                }
            }
            mask ^= 1;
            Arrays.fill(dp[mask], 0);
        }
        return dp[mask ^ 1][target];
    }

举报

相关推荐

0 条评论