C++题解

物理
C++题解

用户头像
小水门(学不会) 更新于2026-9-12 02:39:02

我会从一级的题发,如是问题会先回😁直到我8级(6/8)禁炸鱼😡😡😡


收起
4
2
共4条回复
时间正序
用户头像
清空
15小时前

沙发我的沙发3.png量子物理般的笑声3.png

1条评论
用户头像
小水门(学不会)
15小时前

@清空(试图偷偷拿走🤥)

用户头像
忧郁的入?!
15小时前
龙椅。
用户头像
清空
14小时前
轮椅给你,龙椅我坐。
1条评论
用户头像
小水门(学不会)
14小时前

@忧郁之人类。。。

用户头像
5小时前

网址:luogu.com

没招我老板解散了,只能抄现在的了,所以是6级的,请见谅。

描述

设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。

输入描述

第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi​,Ci​,表示每个物品的重量和价值。

输出描述

仅一行,一个数,表示最大总价值。

用例输入 1 

10 4

2 1

3 3

4 5

7 9

用例输出 1 

12

答案:

#include<bits/stdc++.h>

using namespace std;

int main(){

     ios::sync_with_stdio(false);

     cin.tie(nullptr);

     int n,m,dp[10000],v[10000],w[10000];

     cin >> m >> n;

     for(int i=1;i<=n;i++){

         cin >> w[i] >> v[i];

      } 

      memset(dp,0,sizeof(dp));

      for(int i=1;i<=n;i++){

          for(int j=w[i];j<=m;j++){

              dp[j]=max(dp[j],dp[j-w[i]]+v[i]);

          }

       }

         cout<<dp[m];

       return 0;

}

1条评论
用户头像
4小时前

老班!!!