【算法日志】动态规划刷题:完全背包应用问题(day39)

代码随想录刷题60Day


目录

前言

零钱兑换

完全平方数


前言

今天重点是对完全背包问题进一步了解,难度不大,重点是区分与其他背包问题在初始和遍历上的一些细节。


零钱兑换

cpp 复制代码
int coinChange(vector<int>& coins, int amount) 
	{
		if (!amount)return 0;
		const int size = coins.size();
		vector<int> dp(amount + 1, 0);
		sort(coins.begin(), coins.end());
		if (amount < coins[0])return -1;
		for (int i = 1; i <= amount; ++i)
		{
			for (int j = size - 1; j >= 0; --j)
			{
				if (i >= coins[j] && (!(i - coins[j]) || dp[i - coins[j]]))
				{
					if (dp[i])
						dp[i] = min(dp[i], dp[i - coins[j]] + 1);
					else
						dp[i] = dp[i - coins[j]] + 1;
				} 
			}
		}
		if (dp[amount])return dp[amount];
		return -1;
	}

完全平方数

cpp 复制代码
	int numSquares(int n) 
	{
		vector<int> dp(n + 1, 0);
		for (int i = 1; i <= n; ++i)
		{
			for (int j = 1; j * j <= i; j++)
			{
				if (dp[i])
					dp[i] = min(dp[i], dp[i - j * j] + 1);
				else
					dp[i] = dp[i - j * j] + 1;
			}
		}
		return dp[n];
	}
相关推荐
飞Link3 小时前
什么是 AirSim?一文读懂无人机仿真平台
python·算法·无人机
一去不复返的通信er5 小时前
贪心算法-合并区间(LeetCode 56)
算法·leetcode·贪心算法
Shaoshing6 小时前
LeetCode100 49. 字母异位词分组
java·算法
YFJ_mily6 小时前
第二届区块链技术与基础模型国际学术会议(BTFM2027)
算法·区块链·能源·智能系统·rdlink研发家·机器人自动化
汤姆宝库7 小时前
收官深拆:第一性原理、产业电网与未来推演
大数据·人工智能·算法
moshuying9 小时前
块扩散 + GDN 改造:Clover 把「并行生成」塞进了 Agent 的长上下文里
前端·算法
没落之王9 小时前
历史系统建模:宋初太祖太宗「再立天庭」秩序重构推演
人工智能·算法·重构
INGNIGHT9 小时前
91 · 最小调整代价(序列dp)
数据结构·算法·leetcode
moshuying9 小时前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法