码迷,mamicode.com
首页 > 编程语言 > 详细

poj 3624 (01背包一维数组)

时间:2016-04-18 22:32:30      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:

①这种问题要看清楚变量范围 数组范围很容易开错!!!

②这个下限是w[i]!!!很重要 或者加一句判断  if(j-w[i]>=0) 

 

1  for(int i=1;i<=t;i++)
2         {
3             for(int j=n;j>=w[i];j--)//下限!!!
4                 dp[j]=max( dp[j] , dp[j-w[i]]+v[i] );
5         }

 

AC代码,一维数组可以压缩空间。

 

技术分享
 1 #include  <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 const int maxn_da=3500;
 6 const int maxn_dp=13000;
 7 int dp[maxn_dp];
 8 int v[maxn_da];
 9 int w[maxn_da];
10 
11 int main()
12 {
13     int t,n;
14     while(cin>>t>>n)
15     {
16         for(int i=1;i<=t;i++)
17         {
18             cin>>w[i]>>v[i];
19         }
20 
21         memset(dp,0,sizeof(dp));
22 
23         for(int i=1;i<=t;i++)
24         {
25             for(int j=n;j>=w[i];j--)
26                 dp[j]=max( dp[j] , dp[j-w[i]]+v[i] );
27         }
28         cout<<dp[n]<<endl;
29     }
30 
31     return 0;
32 }
View Code

 

poj 3624 (01背包一维数组)

标签:

原文地址:http://www.cnblogs.com/luosuo10/p/5405816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!