2 条题解

  • 0
    @ 2025-7-2 19:34:39
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    int w[105], val[105];
    int dp[1005];
    int main()
    {
        int t,m,res=-1;    
        scanf("%d%d",&t,&m);
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&w[i],&val[i]);//输入
        }
        for(int i=1;i<=m;i++) 
        {
            for(int j=t;j>=0;j--) //01背包
            {
                if(j>=w[i])//动态规划
                {
                    dp[j]=max(dp[j-w[i]]+val[i], dp[j]);//状态转移方程
                }
            }
        }    
        printf("%d",dp[t]);//输出
        return 0;
    }
    
    • 0
      @ 2024-10-2 10:30:03

      动态规划01背包

      #include<bits/stdc++.h>
      using namespace std;
      int t,m,c[105],w[105],d[100005];
      int main(){
          cin>>t>>m;
          for(int i=1;i<=m;i++){
              cin>>w[i]>>c[i];
          }
          for(int i=1;i<=m;i++){
              for(int j=t;j>=w[i];j--){
                  d[j]=max(d[j],d[j-w[i]]+c[i]);
              }
          }
          cout<<d[t];
          return 0;
      }
      
      • 1

      信息

      ID
      566
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      (无)
      递交数
      36
      已通过
      21
      上传者