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

算法--动态规划--环形数组的最大贡献值

小S拿到了一个长度为 nn 的环形数组,并定义了两个下标 ii 和 jj 的贡献值公式为:
f(i, j) = (a_i + a_j) × dist(i, j)
其中 dist(i, j) 是下标 ii 和 jj 在数组中的最短距离。小S希望找到一对下标,使得它们的贡献值尽可能大。环形数组的特点是最左和最右的元素也是相邻的。你需要帮助她找到最大贡献值。

例如,给定数组 [1, 2, 3],由于是环形数组,任意两个下标的距离都是1,因此 f(2,3)=(2+3)×1=5f(2,3)=(2+3)×1=5。

思路:求最大值,总是要遍历每一种情况,使用双层循环直接实现,疑惑的是,标签是动态规划,但是我没有感受到哪里需要动态规划:
 

public class Main {
    public static int solution(int n, int[] a) {
        //最短距离的实现
        //捋一下思路
        //遍历每一种情况,判断每一种情况的大小,时间复杂度为2次方
        if(a.length == 1) return 0;
        int max = (a[0] + a[1]) * 1;
        for(int i = 0; i < a.length - 1; i++){
            for(int j = i + 1; j < a.length; j++){
                int temp  = (a[i] + a[j]) * caculate(i,j,a);
                if(max < temp){
                    max = temp;
                }
            }
        }
        return max; 
    }

    public static int caculate(int i, int  j,int[] a){
        int result = 0;
        return result = j - i > a.length - j + i ? a.length - j + i : j - i;
     }

    public static void main(String[] args) {
        System.out.println(solution(3, new int[]{1, 2, 3}) == 5);
        System.out.println(solution(4, new int[]{4, 1, 2, 3}) == 12);
        System.out.println(solution(5, new int[]{1, 5, 3, 7, 2}) == 24);
    }
}


http://www.kler.cn/a/401323.html

相关文章:

  • 集群聊天服务器(13)redis环境安装和发布订阅命令
  • css数据不固定情况下,循环加不同背景颜色
  • Siglus引擎 Unpack | 未完待续
  • kubernetes如何配置默认存储
  • 多线程4:线程池、并发、并行、综合案例-抢红包游戏
  • 【含开题报告+文档+PPT+源码】基于springboot的教师评价系统的设计与实现
  • 邻接多重表、十字链表、边集数组
  • 浅谈电力行业网络安全与防护
  • centos7 安装gitlab
  • 深入理解 Vue 3 的 onLoad 和 onReady 生命周期及相关知识点
  • GNU与开源:塑造数字世界的自由基石
  • 【C++】多态:C++编程的魔法师(1)
  • tdengine学习笔记-整体架构及docker安装
  • ([LeetCode仓颉解题报告] 661. 图片平滑器
  • 深入探索Python数据可视化:自定义颜色映射、标签与进阶技巧
  • gitHub常用操作
  • 论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)
  • 从零开始打造个人博客:我的网页设计之旅
  • Jmeter中的后置处理器(一)
  • 计算机中的网络安全
  • sql 根据身份证号获取出生日期并转成对应格式
  • 3 设计模式原则之依赖倒置原则
  • RNN公式解释:实现记忆功能;RNN的状态向量
  • 如何在matlab中将数据打印到csv格式文件中?
  • Eclipse 创建Dynamic web project项目-配置Tomcat服务器
  • 如何利用AI提高测试覆盖率?