首页 > 其他分享 >【代码随想录】零钱兑换II(关于组合与排列的区别)

【代码随想录】零钱兑换II(关于组合与排列的区别)

时间:2024-03-22 20:34:31浏览次数:30  
标签:vector int coins 随想录 II 零钱 amount num dp

题目描述

image

分析

按动态规划的分析步骤分析的话,代码是不难写出来的,但是写出来后你就会发现,结果不对,多出了很多组合:
image
image

解决方法:

image
什么都不用改,直接把两个循环调换即可。。
代码如下:

#include<bits/stdc++.h>
using namespace std;

int change(int amount, vector<int>& coins) {
	int n = coins.size();
	vector<int> dp(amount+1, 0);
	dp[0] = 1;
	//int result = 0;
	
	for(int i = 0; i < n; i++){
		for(int j = 1; j <= amount; j++){
			if(j < coins[i]){
				continue;
			}else{
				if(dp[j - coins[i]] > 0){
					dp[j] += dp[j - coins[i]];
				}
			}
//			if(dp[j] == amount){
//				result++;
//			}
		}
	}
	for(int i = 0; i <= amount; i++){
		cout<<dp[i]<" ";
	}
	cout<<endl;
	return dp[amount];
}
int main(){
	int amount,n;
	cin>>amount>>n;
	vector<int> coins;
	int num;
	for(int i = 0; i < n; i++){
		cin>>num;
		coins.push_back(num);
	}
	cout<<change(amount, coins);
	return 0;
}

标签:vector,int,coins,随想录,II,零钱,amount,num,dp
From: https://www.cnblogs.com/satsuki26681534/p/18090379

相关文章

  • 算法打卡day25|回溯法篇05|Leetcode 491.递增子序列、46.全排列、47.全排列 II
     算法题Leetcode491.递增子序列题目链接:491.递增子序列大佬视频讲解:递增子序列视频讲解 个人思路和昨天的子集2有点像,但昨天的题是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,因为排完序的数组都是自增子序列了。解决......
  • 让IIS支持flv,mkv等未知格式
    让IIS支持flv,mkv等未知格式2011年08月19日 作者 hkshadow要为特定扩展名定义MIME类型,请按照下列步骤操作:打开IISMicrosoft管理控制台(MMC),右键单击本地计算机名称,然后单击“属性”。单击“MIME类型”。单击“新建”。在“扩展名”框中,键入所需的文件扩展名(例如,.MKV)。......
  • 代码随想录算法训练营第五十四天| ● 392.判断子序列 ● 115.不同的子序列
    判断子序列 题目链接:392.判断子序列-力扣(LeetCode)思路:从子串s开始遍历,查找t中是否存在,因为全程不需要回溯,因此两个for循环就解决了。只是要注意return的时机。(只要不想写的很简洁,逻辑挺简单的其实)classSolution{public:boolisSubsequence(strings,stringt){......
  • iis 部署django程序遇到的问题
    部署大致流程settings修改ALLOWED_HOSTS=['*']DEBUG=False上传项目到服务器,安装python,项目环境。pythonmanage.pyrunserver测试是否能运行安装wfastcgi执行wfastcgi-enable或者是pythonwfastcgi-enable-script.py启动成功得到D:\anaconda\python.exe|D:\a......
  • 代码随想录算法训练营第五十四天 | 115.不同的子序列,392.判断子序列
    392.判断子序列 已解答简单 相关标签相关企业 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不......
  • LeetCode.59. 螺旋矩阵 II
    题目描述: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 nxn 正方形矩阵 matrix 。示例1:输入:n=3输出:[[1,2,3],[8,9,4],[7,6,5]]示例2:输入:n=1输出:[[1]]提示:1<=n<=20代码(Java): classSolution{publ......
  • 易基因: WGBS+RNA-seq揭示松材线虫JIII阶段形成过程中的DNA甲基化差异
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。松木线虫(PWN,Bursaphelenchusxylophilus)是一种破坏性病原体,可引起松树枯萎病,感染PWN的松树最终会死亡。这种微观线虫具有复杂的生命周期,具有植食性(以植物为食)和菌丝体(以真菌为食)的发育阶段,以及不同的生命周期,包括繁殖......
  • 代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶
    110.平衡二叉树https://leetcode.cn/problems/balanced-binary-tree/description/publicbooleanisBalanced(TreeNoderoot){intbalance=balance(root);returnbalance==-1?false:true;}publicintbalance(TreeNodenode){i......
  • (45/60)爬楼梯进阶、零钱兑换、完全平方数
    day45爬楼梯进阶卡码网:爬楼梯(第八期模拟笔试)动态规划代码实现/*总和为j总共有dp[j]种方法(可重复选取、排列)dp[j]+=dp[j-nums[i]dp[0]=1;其余为0先背包再物品,正序*/#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intmain(){......
  • (44/60)完全背包、零钱兑换Ⅱ、组合总和Ⅳ
    day44完全背包卡码网:携带研究材料(第七期模拟笔试)动态规划思路完全背包,物品可以无限次取,正序遍历。复杂度分析时间复杂度:O(N^2)。空间复杂度:O(N)。代码实现#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;/*给j的容量可重复选择的最......