首页 > 其他分享 >糖果美味值 (动态规划)

糖果美味值 (动态规划)

时间:2023-04-01 12:03:42浏览次数:39  
标签:动态 Scanner int sc 美味 糖果 输入

描述:有 n 天,每天有一种糖果,糖果具有一定美味值;规定小美今天吃了明天就不能吃,但有 k 次机会打破规则。求这 n 天小美能吃到的最大美味值。

第一行输入 n, k;
第二行输入n天中每天的糖果的美味值。
输出最大美味值。

样例输入:
7 1
1 2 3 4 5 6 7

输出:
19

import java.util.Scanner;

/**
 * 样例输入:
 * 7 1
 * 1 2 3 4 5 6 7
 *
 * 输出:
 * 19
 */
public class Main5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 天数
        int k = sc.nextInt(); // 贪吃券的张数
        int[] nums = new int[n + 1]; // 糖果美味值数组
        for (int i = 1; i <= n; i++) {
            nums[i] = sc.nextInt();
        }

        // dp[i][j]表示前i天用j张贪吃券能获得的最大美味值
        // i 的范围:(1, n] , j 的范围: [0, k]
        int[][] dp = new int[n + 1][k + 1];
        for (int j = 0; j <= k; j++) {
            dp[1][j] = nums[1];
        }

        for (int i = 2; i <= n; i++) {
            for (int j = 0; j <= k; j++) {
                if (j == 0) {
                    // 第i天吃,第i天不吃
                    dp[i][j] = Math.max(dp[i - 2][j] + nums[i], dp[i - 1][j]);
                } else {
                    // 第i天用券吃,第i天不用券吃,第i天不吃
                    dp[i][j] = Math.max(Math.max(dp[i - 1][j - 1] + nums[i], dp[i - 2][j] + nums[i]),
                            dp[i - 1][j]);
                }
            }
        }

        System.out.println(dp[n][k]);
    }
}



标签:动态,Scanner,int,sc,美味,糖果,输入
From: https://blog.51cto.com/u_14301180/6163457

相关文章

  • 第二十八篇 vue - 深入组件 - 动态组件 - component
    component动态组件就是动态变化的组件,和动态样式一样,通过用户的操作来确定是什么类型的组件。动态样式是绑定:style,动态组件则是绑定:is在vue中,实现Tab切换主要有三种方式:使用动态组件,使用vue-router路由,使用第三方插件。本文将详细介绍Vue动态组件所谓动态组件就是让多......
  • SpringBoot下动态数据源
    第一种:Mybatis-Plus的dynamic-datasourceGitee地址:https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter要实现其实很简单,一个注解就可以了1、创建两个一库,一样的表进行测试2、搭建SpringBoot引入dynamic-datasource依赖<dependency><groupId>com.baomidou......
  • 行业动态 | 第一个支持与 ChatGPT 进行面对面聊天的机器人女友(免费可聊)
    生成式AI急速发展GPT-4的上线、文心一言的发布、加上GPT-4植入Office全家桶,不少人感叹:我们每天醒来都被AI的快速发展所震惊,但是更多人感叹自己没有参与其中。国内可用!今天小A介绍一款新的机器人爱丽丝,这是一个免费的网页程序ChatD-ID——世界上第一个允许用户与数字人进行实时对......
  • 动态规划-背包问题
    前言浅谈上篇博客上篇博客是我的第一篇博客,在写完那篇博客后我发现我对ST表的理解比我写博客之前更加透彻了,简单思考后我发现是由于我以前都是简单的学习算法和数据结构,对于一个问题不会去深刻地思考,但是在写博客时,为了防止出错,同时为了更好的讲解,我会去尽可能地查找资料,追究更......
  • 接口自动化之测试数据动态生成并替换
    一、测试数据1.随机库random查看内置random方法,该方法自行学习,不再介绍。showprint([namefornameindir(random)ifcallable(getattr(random,name))])['Random','SystemRandom','_Sequence','_Set','_accumulate','_acos......
  • Asp.Net Core 动态生成WebApi
    在WebApi架构体系中,一般需要先编写应用服务实现,再通过编写Controller来实现应用服务的Web接口。Controller中的代码作用仅仅是调用Service的方法,将Service提升为Web接口,其实完全可以通过动态生成WebApi来减少编码工作。在.Net示例项目ABP中已经实现了动态生成WebApi的功能,Panda.Dy......
  • 什么是动态代理
      importjava.lang.reflect.InvocationHandler;importjava.lang.reflect.Method;importjava.lang.reflect.Proxy;publicclassTest{publicstaticvoidmain(String[]args){Studentstu=newStudent();stu.eat("蛋糕");......
  • vue动态添加input框
    效果代码点击查看代码</details><el-dialogtitle="添加":visible.sync="dynamicFormVisible"width="920px"><el-form:model="dynamicForm"><div><el-form-itemsty......
  • SpringBoot中如何动态加载类到容器
    任何业务脱离场景无任何实际意义。场景:1,实现了多种存储方式,redis和本地内存或者其它,但是你希望根据注解配置只加载一种类到容器。2,经典场景:mybatis将接口的代理类动态加载到容器。分类:静态加载:1,springboot中会扫描同包路径下的(@configuration@Service@Component)标记了上述......
  • 设置动态的spread
    基于波动率的动态spread:根据市场波动率的变化动态调整spread。可以使用统计方法,比如历史波动率、实时波动率等,也可以使用模型,比如GARCH模型等。基于订单簿的动态sprea......