leetcode 343.整数拆分

思路:记忆化搜索或者动态规划

我们首先捋一下思路,而且分析最优解这一类问题,我们需要几个步骤:

1.看问题的描述,找出问题问的最优问题是什么;

2.然后我们就模拟一下这个问题进行到最后一步是什么样子;

3.去掉最后一步又是什么样子;

4.照着2.3步一直类推,这就是递推的过程,也就是我们需要模拟的过程。

举个例子,就拿这道题来说,最优问题是:把一个数拆开k个,使其乘积最大。

进行到最后一步时,是拆出的所有数进行相乘,得出最大乘积;

那么我们去掉最后一步时,其实就是把其中的两个数合起来,这个时候是最后一步的前一步。

这只类推,直到推到所给的n数。

就是这么一个过程。可能有点抽象,那么就先看记忆化搜索的代码,其实也就是DFS:

int mem[100];
class Solution {
public:
    int dfs(int u){
        if(mem[u])return mem[u];
        if(u==0)
        return 1;
        else{
            int res=0;
            for(int i=1;i<u;i++){
                res=max(res,max(i*(u-i),dfs(u-i)*i));
            }
            return mem[u]=res;
        }
        
    }
    int integerBreak(int n) {
        return dfs(n);
    }
};

好了,剩下的DP其实就是对于上面的这个递推进行了改写而已,dfs改写成dp数组就行了。由于dfs中的u也在变化,其中的拆分数也在变化,所以需要两个循环进行改写。

上代码:


class Solution {
public:
    int integerBreak(int n) {
        vector<int>dp(n+1);
        int res=0;
        for(int i=2;i<=n;i++){
            res=0;
            for(int j=1;j<i;j++){
                res=max(res,max(j*(i-j),dp[i-j]*j));
            }
            dp[i]=res;
        }
        return dp[n];
    }
};

相关推荐

  1. leetcode 343.整数

    2024-03-26 12:02:02       16 阅读
  2. LeetCode 343. 整数

    2024-03-26 12:02:02       10 阅读
  3. 343. 整数(力扣LeetCode

    2024-03-26 12:02:02       17 阅读
  4. LC343. 整数

    2024-03-26 12:02:02       14 阅读
  5. [力扣题解] 343. 整数

    2024-03-26 12:02:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 12:02:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 12:02:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 12:02:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 12:02:02       18 阅读

热门阅读

  1. kali MSF网络安全框架

    2024-03-26 12:02:02       20 阅读
  2. C++多态

    C++多态

    2024-03-26 12:02:02      15 阅读
  3. 【阅读笔记】《硬笔书法艺术》

    2024-03-26 12:02:02       15 阅读
  4. sqlite3的安装

    2024-03-26 12:02:02       18 阅读
  5. mac m1安装和使用nvm的问题

    2024-03-26 12:02:02       17 阅读
  6. MYSql通过FULLTEXT实现全文检索

    2024-03-26 12:02:02       15 阅读
  7. 本地远程访问Linux服务器上的jupyter notebook

    2024-03-26 12:02:02       15 阅读
  8. 大模型的模型参数为什么这么多

    2024-03-26 12:02:02       17 阅读
  9. C++/C# 数据类型结构间

    2024-03-26 12:02:02       17 阅读
  10. swift学习小结

    2024-03-26 12:02:02       17 阅读
  11. 嵌入式学习-ARM-IIC实验

    2024-03-26 12:02:02       16 阅读
  12. Dockerfile将jar部署成docker容器

    2024-03-26 12:02:02       18 阅读
  13. 对象数组去重通用方法

    2024-03-26 12:02:02       16 阅读