1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 5 using namespace std; 6 7 const int max_n = 100+2; 8 const int max_W = 10000+2; 9 10 int n,W; 11 int dp[max_n][max_W]; 12 // 定义如下: 13 // dp[i][j]:从前i个物品中,选出重量不超过j的物品 14 // dp[0][j]=0 15 // d[i][j]=? 16 // if(j<w[i]) dp[i][j]=dp[i-1][j] 17 // else dp[i][j]=max(dp[i-1][j],dp[i][j-w[i]] + v[i]) 18 int w[max_n],v[max_n]; 19 20 void solve() 21 { 22 memset(dp,-1,sizeof(dp)); 23 // dp[0][j] = 0 24 // 初始条件 25 for(int i=0;i<=n;++i) 26 { 27 dp[0][i]=0; 28 } 29 30 for(int i=1;i<=n;++i) 31 { 32 for(int j=0;j<=W;++j) 33 { 34 if(j<w[i]) 35 { 36 dp[i][j]=dp[i-1][j]; 37 } 38 else 39 { 40 // 貌似与0-1背包的区别,只在于这里了,将i-1改为i 41 // 当然,要了解实质 42 dp[i][j]=max( dp[i-1][j] , dp[i][j-w[i]] + v[i] ); 43 } 44 } 45 } 46 } 47 48 int main() 49 { 50 scanf("%d %d",&n,&W); 51 for(int i=1;i<=n;++i) 52 { 53 scanf("%d %d",&w[i],&v[i]); 54 } 55 solve(); 56 printf("%d\n",dp[n][W]); 57 return 0; 58 } 59 60 /* 61 3 7 62 3 4 63 4 5 64 2 3 65 */
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法