【完全背包求方案数问题】AcWing1023.买书(赋练习题目)

【题目链接】活动 - AcWing

输入样例1:
复制代码
20
输出样例1:
复制代码
2
输入样例2:
复制代码
15
输出样例2:
复制代码
0
输入样例3:
复制代码
0
输出样例3:
复制代码
1

【代码】

cpp 复制代码
//1023.买书------完全背包问题
 #include<bits/stdc++.h>
 using namespace std;
 int a[5]={0,10,20,50,100};
 int dp[5][1010];
 int main()
 {
 	int n;
 	cin>>n;
 	dp[0][0]=1;
 	for(int i=1;i<=4;i++)
 	{
 		for(int j=0;j<=n;j++)
 		{
 			dp[i][j]=dp[i-1][j];
 			if(j>=a[i]) dp[i][j]+=dp[i][j-a[i]];
 		}	
 	}	
 	cout<<dp[4][n];
 	return 0;
 } 

【完全背包优化后代码】

cpp 复制代码
//优化后
//1023.买书------完全背包问题
#include<bits/stdc++.h>
using namespace std;
int a[5]={0,10,20,50,100};
int dp[1010];
int main()
{
	int n;
	cin>>n;
	dp[0]=1;
	for(int i=1;i<=4;i++)
	{
		for(int j=a[i];j<=n;j++)
		{
			dp[j]+=dp[j-a[i]];
		}	
	}	
	cout<<dp[n];
	return 0;
} 

【相似题目------AcWing1371.货币系统】

【题目链接】 1371. 货币系统 - AcWing题库

输入样例:
复制代码
3 10
1 2 5
输出样例:
复制代码
10

【代码及注释】

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll dp[30][N];
int v[N];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];		
	}
	dp[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=m;j++)
		{
			dp[i][j]=dp[i-1][j];//不选择第i个物品
			if(j>=v[i]) dp[i][j]+=dp[i][j-v[i]]; 
		}
	}
	cout<<dp[n][m];
	return 0;
} 

【优化后代码】

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll dp[N];
int v[N];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>v[i];		
	}
	dp[0]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=v[i];j<=m;j++)
		{
			dp[j]+=dp[j-v[i]]; 
		}
	}
	cout<<dp[m];
	return 0;
} 
相关推荐
笑口常开xpr几秒前
【C++继承】深入浅出C++继承机制
开发语言·数据结构·c++·算法
代码AC不AC3 分钟前
【C++】红黑树实现
c++·红黑树·底层结构
让我们一起加油好吗1 小时前
【基础算法】DFS
算法·深度优先
liu****1 小时前
2.c++面向对象(三)
开发语言·c++
linux kernel1 小时前
第二十四讲:C++中的IO流
开发语言·c++
爱学习的小鱼gogo2 小时前
python 矩阵中寻找就接近的目标值 (矩阵-中等)含源码(八)
开发语言·经验分享·python·算法·职场和发展·矩阵
红纸2812 小时前
Subword算法之WordPiece、Unigram与SentencePiece
人工智能·python·深度学习·神经网络·算法·机器学习·自然语言处理
CUMT_DJ3 小时前
从零复现论文(1)——通感一体化实现协作基站分配与资源分配(CBARA)策略
算法·通感一体化
tt5555555555553 小时前
CSDN 教程:C++ 经典字符串与栈算法题逐行详解
c++·算法·哈希算法
周杰伦fans4 小时前
C++ 中的 `::` 全局作用域符
开发语言·c++