【完全背包求方案数问题】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 分钟前
【C++三方组件】OpenCV:计算机视觉的事实标准
c++
C^h9 小时前
c++ string
开发语言·c++
raindayinrain10 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的10 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao10 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
小徐不徐说11 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的11 小时前
C++第一节课
开发语言·c++
UIU11411 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场12 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi12 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构