题目: 分析:不说了,一道很基本的背包题,竟然写了1个小时,代码低级错误不断,思维也不缜密,代码逻辑小错误也有几处。 代码: #include<bits/stdc++.h> using namespace std; int main() { int m,n; cin>>m>>n; int A[m+1][3]; for(int i=1;i<=m;i++) cin>>A[i][0]>>A[i][1]>>A[i][2]; long long D[n+1][m+1];//n 代表的是 药水的值。 memset(D,0,sizeof(D)); for(int j=1;j<=m;j++) { if(A[j][2]!=0) D[0][j]=D[0][j-1]+A[j][0]; else D[0][j]=D[0][j-1]+A[j][1]; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { D[i][j]=D[i][j-1]+A[j][0]; if(i>=A[j][2]) { D[i][j]=max(D[i][j],D[i-A[j][2]][j-1]+A[j][1]); } } } cout<<D[n][m]*5; }