【完全背包求方案数问题】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;
} 
相关推荐
好奇龙猫10 分钟前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
霁月风44 分钟前
设计模式——适配器模式
c++·适配器模式
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
香菜大丸1 小时前
链表的归并排序
数据结构·算法·链表
jrrz08281 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time1 小时前
golang学习2
算法
咖啡里的茶i1 小时前
Vehicle友元Date多态Sedan和Truck
c++
海绵波波1071 小时前
Webserver(4.9)本地套接字的通信
c++
@小博的博客2 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生2 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法