70分求助

P1048 [NOIP2005 普及组] 采药

点2、3、5没有过
by gyx577158484 @ 2023-04-02 10:25:04


```cpp #include<bits/stdc++.h> using namespace std; int capacity;int num;int pack[105][1005]; int val[105];int vol[105]; int main(){ scanf("%d%d",&capacity,&num); for(int i=0;i<num;i++) scanf("%d%d",&vol[i],&val[i]); for(int i=1;i<=num;i++) for(int v=0;v<=capacity;v++){ pack[i][v]=pack[i-1][v]; if(v-vol[i]>=0&&pack[i][v]<=pack[i-1][v-vol[i]]+val[i]) pack[i][v]=pack[i-1][v-vol[i]]+val[i]; } cout<<pack[num][capacity]<<endl; } ``` 我也是这个问题
by qiqi_loveme99 @ 2023-04-04 19:14:41


我是通过修改输入边界条件解决的
by qiqi_loveme99 @ 2023-04-04 19:19:57


第一个for循环[1,num]
by qiqi_loveme99 @ 2023-04-04 19:20:44


``` #include<iostream> using namespace std; int w[101],c[101],dp[101][1001]; int main(){ int t,m; 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=1;j<=t;j++){ dp[i][j]=dp[i-1][j]; if(w[i]<=j) dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+c[i]); } cout<<dp[m][t]<<endl; return 0; }
by xxc123 @ 2023-04-17 21:37:36


6
by wangxiran666 @ 2023-04-26 19:19:03


dp背包
by WSCU_DZ_XM @ 2023-04-28 21:01:33


|