动态规划---01背包

前言

第三次看动态规划了,总是能够稍微的理解了,但是下次想用的时候就用不出来了...记录一下,时间问题,只有代码没有解释.


import java.util.Arrays;
import java.util.Random;

/**
 * 0 - 1 背包问题
 */
public class BagProblem {
    public static void main(String[] args){
        // 总计n件物品
        int n = 10;
        // m[i]表示第i件物品的重量
        int[] m = new int[n];
        // v[i]表示第i件物品的价值
        int[] v = new int[n];
        // 背包的承重量
        int capacity = 80;

        Random random = new Random();
        for (int i = 0; i < n; i++) {
            int data = random.nextInt();
            data = data < 0 ? data * -1 : data;
            m[i] = data % 22 + 1;
            v[i] = data % 23;
        }
        System.out.println(Arrays.toString(m));
        System.out.println(Arrays.toString(v));

        solve(n, m, v, capacity);
    }

    private static void solve(int n, int[] m, int[] v, int capacity){
        // 因为数组是从0开始的,所以列的size为capacity + 1
        // 同理,行也如此
        // 这样dp[i][j], 就表示j 大小下, 前i个物品装入的最大价值
        // 另外,还有个好处就是不需要判断 i-1是否小于0了,当然,这都不重要
        int[][] dp = new int[n + 1][capacity + 1];
        for (int i = 1; i < n + 1; i++) {
            for (int j = 1; j < capacity + 1; j++) {
                if (j < m[i -1]){
                    // 如果整个包只装它一个都装不下
                    dp[i][j] = dp[i - 1][j];
                } else {
                    // 如果装进去的话得到的价值
                    int takeIn = dp[i - 1][j - m[i - 1]] + v[i - 1];
                    // 如果不装的话价值
                    int notIn = dp[i - 1][j];
                    dp[i][j] = takeIn > notIn ? takeIn : notIn;
                }
            }
        }
        System.out.println("矩阵:");
        for (int[] ints : dp) {
            System.out.println(Arrays.toString(ints));
        }
    }
}

 

内容概要:《中国HR+HER2-早期乳腺癌患者诊疗需求调研白皮书》聚焦于中国早期HR+/HER2-乳腺癌患者的诊疗现状和需求。白皮书通过定量调研,揭示了患者在确诊、复发风险评估、术后辅助治疗及长期管理等各阶段面临的挑战,包括对新药的期待、信息需求及信息渠道偏好。调研显示,患者对新型辅助治疗方案的疗效和生活质量提升寄予厚望,但也存在对不良反应的担忧。此外,患者在理解诊断报告、复发风险认知及获取权威信息方面存在诸多障碍。白皮书呼吁加强患者教育、优化医患沟通、提高新药可及性,以改善患者预后和生活质量。 适合人群:早期HR+/HER2-乳腺癌患者、家属、临床医生及相关医疗工作者。 使用场景及目标:①帮助患者更好地理解诊断结果和后续治疗方案;②为临床医生提供患者需求和挑战的真实数据,优化诊疗路径;③推动社会各界关注和支持早期乳腺癌患者的教育和管理,助力患者早日康复,重获高质量生活。 其他说明:白皮书强调了早期乳腺癌患者在诊疗旅程中面临的多重障碍,包括早期筛查覆盖率不足、复发风险认知偏差及医患沟通壁垒。为应对这些挑战,白皮书提出了多项改进建议,如加强乳腺健康教育、优化诊断结果沟通方式、提升患者对复发风险的认知、强化不良反应管理及构建权威信息平台等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值