leetcode 343 整数拆分
1.这个题拿到之后没有什么思路,此时就应该考虑暴力法。然而每次不知道要拆成几份,没办法用循环,所以想到用递归。
如图所示进行递归,显然有很多重复的计算,所以用自底向上的动态规划。
2.还有一个问题就是memo[i]是如果拆开i的话的最大值,有些数字比如5=2+3,2*3=6>5,这种数字memo[i]>i,拆开更好,但有的数拆开要比原来的数小,所以要进行判断,选择最大的数字。还要注意一点是至少要拆成两个数字。
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int integerBreak(int n) {
vector<int>memo(n+, );
memo[] = ;
memo[]=;
int i, j;
int max;
for (i = ; i <= n; i++)
{
max=;
for (j = ; j <=(i-); j++)
{
if((memo[j]>(j)?memo[j]:j)*(memo[i-j]>(i-j)?memo[i-j]:i-j)>max)
max=(memo[j]>(j)?memo[j]:j)*(memo[i-j]>(i-j)?memo[i-j]:i-j);
}
memo[i]=max;
}
return memo[n];
}
};
leetcode 343 整数拆分的更多相关文章
- LeetCode 343. 整数拆分(Integer Break) 25
		343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ... 
- Java实现 LeetCode 343 整数拆分(动态规划入门经典)
		343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × ... 
- LeetCode 343.整数拆分 - JavaScript
		题目描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 题目分析 题目中"n 至少可以拆分为两个正整数的和",这个条件说 ... 
- HDU 4651 Partition(整数拆分)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651 题意:给出n.求其整数拆分的方案数. i64 f[N]; void init(){ f[0 ... 
- LightOJ 1336 Sigma Function(数论   整数拆分推论)
		--->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ... 
- LightOJ 1341   Aladdin and the Flying Carpet(整数拆分定理)
		分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ... 
- HDU1028 (整数拆分)
		Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ... 
- LeetCode:整数转罗马数字【12】
		LeetCode:整数转罗马数字[12] 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 10 ... 
- 整数拆分问题_C++
		一.问题背景 整数拆分,指把一个整数分解成若干个整数的和 如 3=2+1=1+1+1 共2种拆分 我们认为2+1与1+2为同一种拆分 二.定义 在整数n的拆分中,最大的拆分数为m,我们记它的方案数 ... 
随机推荐
- git提交出现这个界面怎么退出
			默认git使用nano进行编辑提交的页面,退出方法为: Ctrl + X然后输入y再然后回车,就可以退出了 如果你想把默认编辑器换成别的: 在GIT配置中设置 core.editor: git con ... 
- [No0000105]java sdk 开发环境变量powershell 自动配置脚本
			# 设置Java SDK 环境变量 $softwares = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Unin ... 
- 利用Python的collections包下Counter的类统计每个数据出现的个数
			from collections import Counter a = [1, 2, 3, 1, 1, 2] result = Counter(a) print result 输出: {1: 3, 2 ... 
- git add详解
			git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件. git add -u :他仅监控 ... 
- Type Operators instanceof is used to determine whether a PHP variable is an instantiated object of a certain class/a class that implements an interface
			w 0-instanceof is used to determine whether a PHP variable is an instantiated object of a certain cl ... 
- [security][modsecurity][nginx] nginx 与 modsecurity
			参考文档: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#installation-for-nginx nginx不支 ... 
- <大话设计模式>工厂模式,策略模式
			第一章:工厂模式: 通过封装,继承,多态解耦合 业务逻辑和界面逻辑分开 用单独的类创造实例,工厂:创造实例 工厂模式还可以用反射来实现,nsstringFromClass UML类图 聚合表示一众弱的 ... 
- 《linux 计划任务》- cron
			一:什么是计划任务 - 你给手机定了一个闹钟,每天的 7:00 会准时响铃叫你起床,这实际上就是一个计划任务 - 所谓定时任务,就是在已经定好的特定时间去执行的事情. - Cron是一个[守护程序]用 ... 
- svn 修改文件的可执行权限
			设置svn可执行权限,svn:executable 1)svn propset svn:executable on 文件名/文件夹名 2)svn propset svn:executable on t ... 
- linux 查看文件目录大小
			du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-de ... 
