













参考代码:
未优化的代码:
- int n;
- int V;
- const int N=1010;
- int v[N];
- int w[N];
- int dp[N][N];
-
- int main()
- {
- cin>>n>>V;
- for(int i=1;i<=n;i++)
- {
- cin>>v[i]>>w[i];
- }
-
- //第一问:
-
- //dp表中的第一行全是0,无需初始化
- //dp表第一列在填写dp表的时候再填
-
- //填表
- for(int i=1;i<=n;i++)
- {
- for(int j=0;j<=V;j++)
- {
- //状态转移方程
- dp[i][j]=dp[i-1][j];
- if(j>=v[i])
- {
- dp[i][j]=max(dp[i][j],dp[i][j-v[i]]+w[i]);
- }
- }
- }
- //输出结果
- cout<
-
- //清空dp表
- memset(dp,0,sizeof(dp));
-
- //第二问:
-
- //初始化第一行
- dp[0][0]=0;
- for(int j=1;j<=V;j++)
- {
- dp[0][j]=-1;
- }
- //第一列无需初始化,在填dp表的时候再填写
-
- //填表
- for(int i=1;i<=n;i++)
- {
- for(int j=0;j<=V;j++)
- {
- //状态转移方程
- dp[i][j]=dp[i-1][j];
- if(j>=v[i]&&dp[i][j-v[i]]!=-1)
- {
- dp[i][j]=max(dp[i][j],dp[i][j-v[i]]+w[i]);
- }
- }
- }
- cout<<(dp[n][V]==-1?0:dp[n][V])<
-
- return 0;
- }
优化后的代码:
-
- int n;
- int V;
- const int N=1010;
- int v[N];
- int w[N];
- int dp[N];
-
- int main()
- {
- cin>>n>>V;
- for(int i=1;i<=n;i++)
- {
- cin>>v[i]>>w[i];
- }
-
- //第一问:
-
- //dp表中的第一行全是0,无需初始化
-
- //填表
- for(int i=1;i<=n;i++)
- {
- //一定要从左往右遍历,具体原因看图解
- for(int j=v[i];j<=V;j++)
- {
- //状态转移方程
- dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
- }
- }
- //输出结果
- cout<
-
- //清空dp表
- memset(dp,0,sizeof(dp));
-
- //第二问:
-
- //初始化第一行
- dp[0]=0;
- for(int j=1;j<=V;j++)
- {
- dp[j]=-1;
- }
-
- //填表
- for(int i=1;i<=n;i++)
- {
- //一定要从左往右遍历,具体原因看图解
- for(int j=v[i];j<=V;j++)
- {
- //状态转移方程
- if(dp[j-v[i]]!=-1)
- {
- dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
- }
- }
- }
- cout<<(dp[V]==-1?0:dp[V])<
-
- return 0;
- }
你学会了吗???
-
相关阅读:
uniapp使用第三方字体
MySQL docker compose安装配置
nodejs+vue+elementui通用在线新闻发布网
大数据运维实战第七课 通过 Ambari工具自动化构建 Hadoop 大数据平台和外围应用(上)
程序设计与算法(三)C++面向对象程序设计笔记 第十周 C++11新特性和C++高级主题
Python动态建模(4)
cadence layout lvs时出现error
Flutter启动页
`Algorithm-Solution` `AcWing` 342. 道路与航线
C/S架构学习之广播
-
原文地址:https://blog.csdn.net/weixin_70056514/article/details/133501704