当前位置: 首页 > news >正文

贪心算法(9)(java)最优除法

题目:

        给定一正整数数组 nums,nums中的相邻整数将进行浮点除法。例如,[2,3.4]->2/3/4.
例如,nums =[2,3,4],我们将求表达式的值“2/3/4"。
       但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,以便计算后的表达式的值为最大值。以字符串格式返回具有最大值的对应表达式。

       注意:你的表达式不应该包含多余的括号。

输入:【1000,100,10,2】

输出:”1000/(100/10/2)”

解法一:(复杂,不推荐)

暴力解法->递归->记忆化搜索->动态规划

解法二: 

贪心策略:除了前两个数以外,其余数全放在分子上即可。

public class Solution {
    public String optimalDivision(int[]nums)
    {
        int n=nums.length;//获取数组长度
        StringBuffer ret=new StringBuffer();//拼接结果字符串
        if(n==1)//如果只有·一个元素,直接返回该元素
        {
            return ret.append(nums[0]).toString();

        }
        if(n==2)//如果有2个元素,返回a/b
        {
            return ret.append(nums[0]).append("/").append(nums[1]).toString();

        }
        //当元素个数大于2时,构造a/(b/c/d...)形式最大化结果
        ret.append(nums[0]).append("/(").append(nums[1]);
        for(int i=2;i<n;i++)//从第三个元素开始循环添加
        {
         ret.append("/").append(nums[i]);
        }
        ret.append(")");
        return ret.toString();


    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        int[]nums={1000,100,10,2};
        System.out.println(solution.optimalDivision(nums));

    }
}

相关文章:

  • Apache Paimon 在抖音集团多场景中的优化实践
  • 昆仑万维开源R1V:38B参数多模态推理模型开启AI新纪元
  • 网络编程中的黏包和半包问题
  • [AI]实现简易AI Agent — — Transformers库
  • HTTP+DNS综合实验
  • Java面试黄金宝典3
  • 链表操作:分区与回文判断
  • (超详细) ETL工具之Kettle
  • ai应用开发代码
  • QT日志级别设置
  • xlsx.utils.json_to_sheet函数详解
  • web第六次
  • 在 STM32F7 系列微控制器中,使用定时器(如 TIM10)实现 10ms 中断,并在中断服务函数中调用 ProRelay() 函数
  • 配置集群-日志聚集操作
  • Flutter IconButton完全指南:高效使用与性能优化秘籍
  • 只是“更轻更薄”?不!遨游三防平板还选择“更强更韧”
  • 如何基于Gone编写一个Goner对接Apollo配置中心(下)—— 对组件进行单元测试
  • NPN三极管基极接稳压管的作用
  • 基于微信小程序的充电桩管理系统
  • PHP序列化漏洞
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 神十九乘组视频祝福第十个中国航天日,展望中华民族登月梦圆
  • 民建吉林省委提案:当前生育政策集中鼓励多孩生育,应该转变思路
  • GDP增长4.1%,一季度广东经济数据出炉
  • 62岁中国国际商会副会长、康力电梯创始人王友林逝世
  • 美菲开始举行年度军演,外交部:菲公然站在地区国家的对立面