首页 > 编程语言 >代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树

代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树

时间:2023-07-17 09:56:49浏览次数:56  
标签:int 最大值 随想录 乘机 拆分 343 dp 96

 343. 整数拆分

要求:

将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的

思路:

DP数组:dp[n] N 的时候,它的乘机最大值

注意:

不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的 i* (n-i)

代码:

 1 // 要求:将N 拆分成 K个正整数的和(K》=2) 并让这些整数的乘机最大化
 2 // 
 3 // 可能的思路:数在这个范围内,同时相差最小
 4 // 难点:如何求的乘机最大化
 5 // 
 6 // 动态规划的思路:
 7 //    dp的定义:dp[n] N个数它的乘机最大化
 8 // 递推公式分为两种:
 9 //    1,两个数之间取最大值 : i *(n-i)
10 //    2,三个及以上去的最大值 : i * dp[n-i]
11 //
12 int integerBreak(int n) {
13     vector<int> dp(n+1, 0);
14     if (n < 2) return dp[n];
15 
16     dp[2] = 1;
17     for (int i = 3; i < dp.size(); i++)
18     {
19         
20         for (int j = 0; j <= i; j++)
21         {
22             //两个值的情况
23             int cur1 = j * (i - j);
24             int cur2 = j * dp[i - j];
25 
26             dp[i] = max(dp[i], max(cur1, cur2));
27         }
28     }
29 
30     return dp[n];
31 }

 

标签:int,最大值,随想录,乘机,拆分,343,dp,96
From: https://www.cnblogs.com/smartisn/p/17559182.html

相关文章

  • Codeforces Round 896 Div2 A-D题解
    CodeforcesRound896A.Politics这题问的是,给一些人的在n个议题的观点,然后你可以随意安排顺序,每个议题人多的赢,反对派会离开,问随便安排议题,最多留下多少人,包括我自己这个题刚开始愣了半天,但是想到,那只要把所有和我观点一致的给留下来不就行了???然后交上去就AC了ACCode#inclu......
  • P4967 黑暗打击
    题目链接:P4967黑暗打击题意对于\(n\)阶的\(\mathsf{Hilbert}\)曲线,从上往下灌水,能淹没几个单位面积?这是\(1\sim4\)阶的\(\mathsf{Hilbert}\)曲线:\(h_1\),如最左图所示,是一个缺上口的正方形,这个正方形的边长为\(1\)。从\(h_2\)开始,按照以下方法构造曲线\(h_i\):......
  • 7月15日。【“你听到的oasis,是1996年的oasis,你看到的太阳,是8分钟前的太阳,这就是这个
    7月15日。【“你听到的oasis,是1996年的oasis,你看到的太阳,是8分钟前的太阳,这就是这个世界的真实,一切美好的都是过去”】主播今天自闭了。小丑写了一天都没写出来。我果然是小丑。然后把草稿纸全撕了,晚饭也没去吃,可也没去上,行李箱都收好了准备直接回无锡不学了。傻逼小丑写你......
  • 2496
    一个由字母和数字组成的字符串的 值 定义如下:如果字符串 只 包含数字,那么值为该字符串在 10 进制下的所表示的数字。否则,值为字符串的 长度 。给你一个字符串数组 strs ,每个字符串都只由字母和数字组成,请你返回 strs 中字符串的 最大值 。 示例1:输入:strs......
  • 代码随想录算法训练营第三十一天| 62.不同路径 63. 不同路径 II
    62.不同路径思路:因为只能向左,和向下,因此只能是前面的加上左边的,递推公式较为简单代码:1intuniquePaths(intm,intn){2if(m==1||n==1)return1;34vector<vector<int>>nums(m,vector<int>(n,1));56for(inti=1;i<m;i++......
  • Oracle学习笔记:parallel并行处理 --转载 https://blog.csdn.net/w892824196/article/
    在使用oracel查询时,可以通过并行提高查询速度。例如:select/*+parallel(a,6)*/count(1)fromtable_namea;强行启用并行度来执行当前SQL。加上这个说明之后,可以强行启用Oracle的多线程处理功能,提高效率。但本身启动这个功能,也是要消耗资源与性能的。所有,一般都会在返回记......
  • Codeforces 1396E - Distance Matching
    先考虑一下合法的\(k\)的上界和下界是什么以及如何达到上界和下界,我们找出树的一个重心\(R\)并以\(R\)为根dfs一遍整棵树,那么:下界为\(\sum(siz_i\bmod2)\),构造方法是从下往上钦定,对于一个点考虑其所有没有匹配的儿子,如果是偶数个就将它们两两匹配,如果是奇数个就将它们......
  • HJ96 表示数字
    1.题目读题 HJ96 表示数字 考查点 2.解法思路 代码逻辑 具体实现  自有实现publicclassHJ96{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.println(showNum(sc.nextLine()));}......
  • 代码随想录算法训练营第二十九天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分
      860.柠檬水找零 思路:遇到20,先给10和5,再给三个5代码:1boollemonadeChange(vector<int>&bills){2if(bills.size()==0)returntrue;34map<int,int>currentMoney;5for(inti=0;i<bills.size();i++)6{7if......
  • 一文彻底搞懂MySQL基础:B树和B+树的区别 转载 https://blog.csdn.net/a519640026/arti
    写在前面大家在面试的时候,肯定都会被问到MySql的知识,以下是面试场景:面试官:对于MySQL,你对他索引原理了解吗?我:了解面试官:MySQL的索引是用什么数据机构的?我:B+树面试官:为什么要用B+树,而不是B树?我:…面试官:用B+树作为MySql的索引结构,用什么好处?我:…B树和B+树是MySQL索引使用的数据结构......