084621205


私信TA

用户名:shc003218

访问量:261

签 名:

我相信会好起来的

等  级
排  名 3218
经  验 1918
参赛次数 4
文章发表 2
年  龄 0
在职情况 学生
学  校 南京中医药大学
专  业

  自我简介:

来日方长 未来可期

TA的其他文章

解题思路:动态规划的简单应用

注意事项:最好得拿张纸写写,再用断点去一点点领悟其运行过程

参考代码:

/*
   关于动态规划的一道题目
   一个美食家在一条街上从前往后吃,每一次吃的都要比上次的更加好
   要尽量吃的次数多
   会输入总的小吃的数目以及小吃的美味程度

   Time:2023/2/10

   Author:Cherish

   c1557
*/

import java.util.Arrays;
import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
       int SnackSum;
       int maxDelicious = 0;        //最大美味次数
       int i,j;
       Scanner ss = new Scanner(System.in);
       SnackSum = ss.nextInt();
       int[] SnackDelicacy = new int[SnackSum];
       int[] dp = new int[SnackSum];
       for (i = 0; i < SnackSum; i++){
           SnackDelicacy[i] = ss.nextInt();
       }
       /*
           思路是动态规划,建议拿张纸画图
           最好再用断点试着判断一下才行
           不然比较难理解
        */
       Arrays.fill(dp,1);

        //---以下是重点---
       for (i = 1; i <= SnackSum-1; i++){
           for (j = i - 1; j >= 0; j--){
               if (SnackDelicacy[i] >= SnackDelicacy[j]){
                   dp[i] = Math.max(dp[i], dp[j]+1);
               }
           }
           if (dp[i] > maxDelicious){
               maxDelicious = dp[i];
           }
       }

        //---到此为止---
       System.out.println(maxDelicious);
       // 测试输入情况
       // System.out.println(SnackSum);
       // System.out.println(Arrays.toString(SnackDelicacy));
   }
}


 

0.0分

0 人评分

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

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区