背包问题
突然意识到,商品可以重复购买和商品只能买一个两种问题其实只要改一行代码即可实现,即两个问题只要改一下刷表的顺序即可,对于逆序刷表那便是只能买一次,顺序刷表便是不限制购买次数,如下
//逆序 #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cstdlib> #include <algorithm> #include <stack> #include <queue> #include <map> #include <cmath> #define int long long using namespace std; int N,M,w[3500],v[3500],dp[20000]; signed main() { cin>>N>>M; for(int i=1;i<=N;i++)cin>>w[i]>>v[i]; //有意识的采用把复杂问题转化成庞杂子问题的集合的思想就是动态规划思想, //因为复杂问题有意识的分解成子问题后就可以实现子问题的防止重复求解的问题, //而不分解则会间接做重复的工作 for(int j=0;j<=M;j++) { if(j>=w[1])dp[j]=v[1];else dp[j]=0; } for(int i=2;i<=N;i++) { for(int j=M;j>=0;j--)//调转此行既为顺序 { if(j-w[i]>=0) dp[j]=max(dp[j],v[i]+dp[j-w[i]]); } } cout<<dp[M]<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」