题目:小猴子下山,沿着下山的路有一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下 山的方向走,不能回头,每颗树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子。那么小 猴子最多能摘到几颗桃子呢?举例说明,比如有5棵树,分别结了

简介: package com.hp.algorithm.mostpeach; import java.util.ArrayList;import java.util.List; public class MostPeach{ public static int currMaxPeachNum = 0;/.

package com.hp.algorithm.mostpeach;

import java.util.ArrayList;
import java.util.List;
public class MostPeach
{

public static int currMaxPeachNum = 0;//当前摘的最大一颗树
public static int mostPeach(List<Integer> treeWithPeach){
    if(null == treeWithPeach){
        return 0;
    }
    if(1 == treeWithPeach.size()){
        if(currMaxPeachNum > treeWithPeach.get(0)){
            return 0;
        }
        return 1;
    }

    int pick = 0;
    int notPick = 0;
    if(currMaxPeachNum <= treeWithPeach.get(0)){
        //情况1:当前桃子树大于currMaxPeachNum,摘。摘了之后还要摘后面的树
        currMaxPeachNum = treeWithPeach.get(0);
        pick = 1 + mostPeach(treeWithPeach.subList(1, treeWithPeach.size()));
    }

    //情况2:当前桃子树大于currMaxPeachNum,不摘
    //情况3:当前桃子树小于currMaxPeachNum,不摘
    notPick = mostPeach(treeWithPeach.subList(1, treeWithPeach.size()));

    if(pick > notPick){
        return pick;
    }
    return notPick;
}
/**
 * @param args
 */
public static void main(String[] args)
{
    List<Integer> case1 = new ArrayList<Integer>();
    case1.add(5);case1.add(10);case1.add(4);case1.add(5);case1.add(12);case1.add(8);
    List<Integer> case2 = new ArrayList<Integer>();
    case2.add(5);case2.add(3);case2.add(5);case2.add(4);
    List<Integer> case3 = new ArrayList<Integer>();
    case3.add(1);
    System.out.println(mostPeach(case3));
}

}

目录
相关文章
|
负载均衡 前端开发 Cloud Native
API 网关选型及包含 BFF 的架构设计
在更通用的场景下我们会使用 NGINX 这样的软件做前置,用来处理SLB负载均衡过来的流量,作用是反向代理、集群负载均衡、转发、日志收集等功能。
API 网关选型及包含 BFF 的架构设计
|
API 索引
JDK8之findAny和findFirst
JDK8之findAny和findFirst
605 0
|
消息中间件 SpringCloudAlibaba 资源调度
SpringCloudalibaba 与 SpringCloud 区别 | 学习笔记
快速学习 SpringCloudalibaba 与 SpringCloud 区别
3722 0
|
应用服务中间件 API nginx
一个超长时间的http api 的 nginx 超时错误 java.io.IOException: unexpected end of stream on Connection
一个长时间的http api 的 nginx 超时错误 直接访问IP是OK的。但是经过了中间一台域名机子,配置了nginx (基本上所有的超时时间timeout配置项都配置了足够的时间)的proxy_pass到这个IP上。
7801 0
|
存储 固态存储 文件存储
并行文件存储在大模型训练中的探索与实践
阿里云智能集团存储产品专家何邦剑分享了并行文件存储CPFS在大模型训练中的应用。CPFS针对大模型训练的IO特点,优化性能、降低成本、提升用户体验。它支持多计算平台共享访问,具备数据分层存储、生命周期管理、缓存加速等特性,实现高效的数据处理与管理,显著提升训练效率和资源利用率。尤其在大规模集群中,CPFS提供了高吞吐、低延迟及灵活扩展的能力,助力客户如零一万物实现高性能训练。
|
安全 关系型数据库 开发工具
一起聊聊 Supabase 如何构建其平台工程策略
【9月更文挑战第4天】Supabase 是一家开源 PostgreSQL 数据库基础设施提供商,被视为 Google Firebase 的替代方案。该公司采用不断演进的平台工程策略,为其开发团队提供高效的应用开发工具。自2020年起运营的 Supabase 通过整合与自动化内部开发平台,显著提升了生产力。平台工程师 Samuel Rose 加入后,进一步正式化和扩展了这一策略,结合自有产品与行业标准工具,实现了更高效的开发流程。目前,Supabase 的平台工程成果显著,为开发者提供了更好的自助服务和支持。
451 14
|
IDE Java 应用服务中间件
如何检查并解决类路径中的类库版本冲突问题
类路径中的类库版本冲突可能导致应用运行异常。解决方法包括:1. 使用依赖管理工具(如Maven、Gradle)检查依赖树,找出冲突的库;2. 调整依赖版本或排除特定版本;3. 清理缓存,重新构建项目。
608 2
|
数据采集 算法 数据可视化
【优秀python算法设计】基于Python网络爬虫的今日头条新闻数据分析与热度预测模型构建的设计与实现
本文设计并实现了一个基于Python网络爬虫和机器学习模型的今日头条新闻数据分析与热度预测系统,通过数据采集、特征工程、模型构建和可视化展示,挖掘用户行为信息和内容特征,预测新闻热度,为内容推荐和舆情监控提供决策支持。
890 0
【优秀python算法设计】基于Python网络爬虫的今日头条新闻数据分析与热度预测模型构建的设计与实现
|
运维 Cloud Native Java
SLS支持高精度时间戳和全局排序
日志内容本身是一种重要信息,日志之间的相对顺序也是因果关系的一种反映,某些场景下如果日志内容完全相同,但是日志间的顺序错乱了反映出来的结果可能和真实世界里面的事件完全相反。
62730 12
SLS支持高精度时间戳和全局排序
|
JavaScript Ubuntu 前端开发
Ubuntu部署Minio(单机单驱动)
Ubuntu部署Minio(单机单驱动)
319 0