9分求助,这种方法不可以吗?
查看原帖
9分求助,这种方法不可以吗?
658322
likeyou666楼主2023/5/17 10:59
状态:dp[i]——最多有 i 元,再把钱花完的情况下,最多的点菜方案
状态方程:dp[i] = max(dp[i],dp[i-w[k]]+1)
初始化:dp[0] = 0;dp[1~m]=-2147483648


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n,m;
        n = in.nextInt();
        m = in.nextInt();
        int[] w = new int[105];
        int[] dp = new int[10005];
        for (int i = 1; i <= n; i++) {
            w[i] = in.nextInt();
        }
        dp[0] = 0;
        for (int i = 1; i <= m; i++) dp[i] = -2147483648;
        for (int k = 1; k <= n; k++) {
            for (int i = m; i >= w[k]; i--) {
                dp[i] = Math.max(dp[i],dp[i-w[k]]+1);
            }
        }
        System.out.println(dp[m]);
    }
}
2023/5/17 10:59
加载中...