IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【剑指 Offer】14- I. 剪绳子(详细解析) -> 正文阅读

[数据结构与算法]【剑指 Offer】14- I. 剪绳子(详细解析)

第 32 日:I. 剪绳子

题目链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/

题目

在这里插入图片描述

解题

  1. 动态规划

    解题思路:
    动态规划还是比较容易理解的:
    1.创建dp数组,用来存放i(下标)的最大乘积
    2.初始化长度为2的最大乘积为1
    3.后面每次求最大乘积,根据自身和之前以求过的dp数组筛选最大值

    详细代码如下:

class Solution {
    public int cuttingRope(int n) {
        int[] dp=new int[n+1];
        dp[2]=1;
        for(int i=3;i<=n;i++){
            for(int j=2;j<i;j++){
                dp[i] = Math.max(dp[i], Math.max(j * (i - j), j * dp[i - j]));
            }
        }
        return dp[n];
    }
}

在这里插入图片描述

  1. 数学

    解题思路:

   由于1乘以任何数,都等于本身,所以我们选择从2开始分解
2:1+1、max=11=1
3:1+2、max=12=2
4:2+2、max=22=4
5:2+3、max=23=6
6:2+4、3+3、2+2+2、max=33=9
7:2+5、3+4、2+2+3、max=34=12
8:2+6、3+5、4+4、2+2+4、2+3+3、max=233=18
9:2+7、3+6、4+5、2+2+5、2+3+4、3+3+3、max=333=27
由上述,可知,从5开始,max总是等于以数字3为核心的各个数的乘积,我们得出结论,max的值,等于将n尽可能多的分解为数字3的乘积。

完整的数学推导可以看这里!

详细代码如下:

public int cuttingRope(int n) {
    if(n==2) return 1;
    if(n==3) return 2;
    if(n==4) return 4;

    int r=n%3,c=n/3;
    int res=0;
    
    if(r==1){
        res=4*(int)Math.pow(3,c-1);
    }else if(r==0){
        res=(int)Math.pow(3,c);
    }else{
        res=r*(int)Math.pow(3,c);
    }
    return res;
}

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:25:30  更:2021-11-18 11:26:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:41:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码