【算法日志】动态规划刷题:完全背包应用问题(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];
	}
相关推荐
ting94520004 小时前
Humalike X Hermes 深度技术剖析:单指令注入群聊社交智能的底层架构、算法与跨 IM 平台实现
人工智能·算法·架构
吴声子夜歌4 小时前
Java面试——算法
java·算法·面试
evans在进步4 小时前
LeetCode 64:最小路径和——Java 原地动态规划详解
java·leetcode·动态规划
h_a_o777oah5 小时前
【图论】Tarjan 缩点:解决有向图中环的问题
c++·算法·图论·acm·强连通分量·缩点·tarjan
Tisfy5 小时前
LeetCode 1386.安排电影院座位:哈希表+位运算
算法·leetcode·散列表·题解·哈希表
Nil2085 小时前
leetcode 199二叉树的右视图
算法·leetcode·深度优先
M78佐菲6 小时前
c语言学习笔记:排序与查找方法整理
linux·c语言·笔记·学习·算法
AI备案指南-满满8 小时前
人工智能拟人化互动服务安全自评估报告的评估要点有哪些?
人工智能·算法·安全·机器人·大模型备案·算法备案
土司大王10 小时前
LeetCode hot100——两两交换链表中的节点
算法·leetcode·职场和发展