D41第九章 动态规划part03● 343. 整数拆分 ● 96.不同的二叉搜索树

第九章 动态规划part03

  • 343. 整数拆分
  • 给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。
  • 动态规划五部曲:
  • 1、确定dp数组以及下标的含义,dp[i]分拆数字i,可以得到最大乘积dp[i].
  • 2、确定递推公式,可以想dp[i]最大乘积是怎么得到的呢,其实可以从1遍历j,然后有两种渠道得到dp[i].一个是j*(i-j)直接相乘。
  • class Solution {
        public int integerBreak(int n) {
            //dp[i] 为正整数 i 拆分后的结果的最大乘积
            int[] dp = new int[n+1];
            dp[2] = 1;
            for(int i = 3; i <= n; i++) {
                for(int j = 1; j <= i-j; j++) {
                    // 这里的 j 其实最大值为 i-j,再大只不过是重复而已,
                    //并且,在本题中,我们分析 dp[0], dp[1]都是无意义的,
                    //j 最大到 i-j,就不会用到 dp[0]与dp[1]
                    dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]));
                    // j * (i - j) 是单纯的把整数 i 拆分为两个数 也就是 i,i-j ,再相乘
                    //而j * dp[i - j]是将 i 拆分成两个以及两个以上的个数,再相乘。
                }
            }
            return dp[n];
        }
    }

  • 96.不同的二叉搜索树
class Solution {
    public int numTrees(int n) {
        //初始化 dp 数组
        int[] dp = new int[n + 1];
        //初始化0个节点和1个节点的情况
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                //对于第i个节点,需要考虑1作为根节点直到i作为根节点的情况,所以需要累加
                //一共i个节点,对于根节点j时,左子树的节点个数为j-1,右子树的节点个数为i-j
                dp[i] += dp[j - 1] * dp[i - j];
            }
        }
        return dp[n];
    }
}

引用\[1\]: CMake Error at cmake/OpenCVUtils.cmake:1043 (file): file DOWNLOAD HASH mismatch for file: \[F:/build-opencv3.2.0/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/.download/7126a5d9a8884ebca5aea5d63d677225/vgg_generated_64.i\] expected hash: \[7126a5d9a8884ebca5aea5d63d677225\] actual hash: \[d41d8cd98f00b204e9800998ecf8427e\] status: \[6;"Couldn't resolve host name"\] 引用\[2\]:打开文件:F:\build-opencv3.2.0\opencv-3.2.0\cmake\OpenCVCompilerOptions.cmake 看下第21行 我去,这是谁写的,怎么同一个if下有两个else呢 直接把第二个else去掉吧,即把第21行第22行注释掉吧。 继续configure,依然是缺那几个文件: Downloading opencv_ffmpeg.dll... CMake Error at cmake/OpenCVUtils.cmake:1043 (file): file DOWNLOAD HASH mismatch for file: \[F:/build-opencv3.2.0/opencv-3.2.0/3rdparty/ffmpeg/downloads/f081abd9d6ca7e425d340ce586f9c090/opencv_ffmpeg.dll\] expected hash: \[f081abd9d6ca7e425d340ce586f9c090\] actual hash: \[d41d8cd98f00b204e9800998ecf8427e\] status: \[6;"Couldn't resolve host name"\] Call Stack (most recent call first): 3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download) cmake/OpenCVFindLibsVideo.cmake:219 (include) CMakeLists.txt:557 (include) CMake Error at cmake/OpenCVUtils.cmake:1047 (message): Failed to download opencv_ffmpeg.dll. Status=6;"Couldn't resolve host name" Call Stack (most recent call first): 3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download) cmake/OpenCVFindLibsVideo.cmake:219 (include) CMakeLists.txt:557 (include) 引用\[3\]:下载完成后,创建相关目录并解压。 打开Cmake,然后按下面的截图操作: 很快报错,报错如下: CMake Error at cmake/OpenCVCompilerOptions.cmake:21 (else): Flow control statements are not properly nested. Call Stack (most recent call first): CMakeLists.txt:495 (include) 问题: .cmake文件的pwd 回答: 你提到的".cmake"文件的pwd是指当前工作目录。在这个上下文中,".cmake"文件的pwd是指该文件所在的目录路径。 #### 引用[.reference_title] - *1* *2* *3* [利用CMake生成OpenCV-3.2.0的VS2013工程(解决方案)的失败过程记录...](https://blog.csdn.net/wenhao_ir/article/details/125103083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值