leetcode 剪绳子系列
### 剪绳子一
利用动态规划
状态转移方程
为啥是这个样子?首先
代表 长度为i的绳子被剪去j,且继续剪(子问题)
表示长度为i的绳子被剪去j,不剪了的乘积
注意初始化:
n<2 f=0
n==2 f = 1(因为可以分为1 * 1)
n==3 f = 2(因为可以分为1*2)
两种方式:
- 递归+备忘录(不用备忘录超时,去除重复子问题)
- dp数组 dp[i]= max(dp[i],max(dp[i-j]*j,(i-j)*j)))
class Solution {
public:int *memo;int cutRope(int number) {memo = new int[number+1];for(int i=0;i
### 剪绳子二
绳子长度范围增加,导致结果必须要对1000000007求余,而求余过程导致动态规划失效,因此使用数学推导
class Solution {
public:int cuttingRope(int n) {// memo = new int[n+1];// for(int i=0;i<=n;++i) memo[i] = -1;// return dp(n);if(n<2) return 0;if(n==2) rerurn 1;if(n==3) return 2;int div = n / 3;int rem = n % 3;long res = 1;for(int i=0;i
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
