整数拆分——力扣343

文章目录

      • 题目描述
      • [法一 动态规划](#法一 动态规划)
      • [法二 动态规划优化](#法二 动态规划优化)
      • [法三 数学](#法三 数学)

题目描述

法一 动态规划

cpp 复制代码
int integerBreak(int n) {
		vector<int> dp(n+1);
		for(int i=2;i<=n;i++){
			int curMax = 0;
			for(int j=1;j<i;j++){
				curMax = max(curMax, max(j*(i-j), j*dp[i-j]));
			}
			dp[i] = curMax;
		} 
		return dp[n];
	}

法二 动态规划优化

cpp 复制代码
int integerBreak(int n){
		if(n<=3){
			return n-1;
		}	
		vector<int> dp(n+1);
		dp[2]=1;
		for(int i=3;i<=n;i++){
			dp[i] = max(max(2*(i-2), 2*dp[i-2]), max(3*(i-3), 3*dp[i-3]));
		}
		return dp[n];
	}

法三 数学

cpp 复制代码
int integerBreak(int n){
		if(n<=3){
			return n-1;
		}
		int chu = n/3, mod = n%3;
		if(mod==0){
			return (int)pow(3, chu);
		} else if(mod==1){
			return (int)pow(3, chu-1)*4;
		} else {
			return (int)pow(3, chu)*2;
		}
	}
相关推荐
菜鸟555552 小时前
图论:Floyd算法
算法·图论
Minecraft红客2 小时前
C++小游戏荒芜的城堡
c++·游戏·娱乐
呼啦啦啦啦啦啦啦啦7 小时前
常见的排序算法
java·算法·排序算法
胡萝卜3.08 小时前
数据结构初阶:排序算法(一)插入排序、选择排序
数据结构·笔记·学习·算法·排序算法·学习方法
地平线开发者8 小时前
LLM 中 token 简介与 bert 实操解读
算法·自动驾驶
lyx33136967598 小时前
Pandas数据结构详解Series与DataFrame
数据结构·pandas
scx201310048 小时前
20250814 最小生成树和重构树总结
c++·算法·最小生成树·重构树
阿巴~阿巴~9 小时前
冒泡排序算法
c语言·开发语言·算法·排序算法
散1129 小时前
01数据结构-交换排序
数据结构·算法
yzx9910139 小时前
Yolov模型的演变
人工智能·算法·yolo