acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • CTRL+C……CTRL+V

    userId_undefined

    虫大

    72阅读
    2回复
    2点赞
  • 题解

    #include<bits/stdc++.h> using namespace std; int dp[201][201],w[100],c[100]; int main(){ int m,n;//背包容量为m,有n件物品 cin>>m>>n; for(int i=1;i<=n;i++) cin>>w[i]>>c[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(j-w[i]>=0) dp[i][j]=max(dp[i-1][j-w[i]]+c[i],dp[i-1][j]); else dp[i][j]=dp[i-1][j];//当前最优解 } } cout<<dp[n][m]; return 0; }

    userId_undefined

    181****0362

    63阅读
    1回复
    2点赞
  • 题解

    #include<bits/stdc++.h> using namespace std; int n,m,w[31],v[31],f[205];//f[j]表示容量不超过j时的最大价值 int main() { cin>>m>>n; for(int i = 1;i<=n;i++) { cin>>w[i]>>v[i]; } for(int i = 1;i<=n;i++) { for(int j = m;j>=w[i];j--) { if(f[j-w[i]]+v[i]>f[j]) { f[j] = max(f[j],f[j-w[i]]+v[i]); } else { continue; } } } cout<<f[m]<<endl; return 0; }

    userId_undefined

    一只聪明的傻鳕鱼

    6阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页