秃头管管


私信TA

用户名:dotcpp0733342

访问量:83

签 名:

等  级
排  名 42158
经  验 312
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

蓝桥杯求阶乘
浏览:33

解题思路:

注意事项:

参考代码:import java.util.Scanner;
//秘密行动
//动态规划
//dp[i][2]:走到第i层楼花的时间,可以是爬的,也可以是跳跃的,爬:dp[i][0],跳跃:dp[i][1]

//难点在跳跃不能连续使用
//所以dp[i][1]只能是在爬的基础上才能跳跃
public class Main5 {
   static int []arr;
   static int [][]dp;
   public static void main(String[] args) {
       Scanner scanner=new Scanner(System.in);
       int n=scanner.nextInt();
       arr=new int[n];
       dp=new int[n+1][2];

       for(int i=0;i<n;i++){
           arr[i]=scanner.nextInt();
       }
       
       dp[1][0]=arr[0];
       boolean jump=false;
       for(int i=2;i<n+1;i++){
           //爬到第i层上一步可以是跳跃得到的,也可以是爬得到的
          dp[i][0]=Math.min(dp[i-1][0],dp[i-1][1])+arr[i-1];
          //跳到第i层上一步只能是爬得到的,可以是经过跳一层得到的,也可以是经过跳两层得到的
           dp[i][1]=Math.min(dp[i-1][0],dp[i-2][0]);
       }
       //8 3
      System.out.println(Math.min(dp[n][0],dp[n][1]));
   }

}

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区