为什么在不使用滚动数组时,第二和第三个循环还要逆序?不是使用了滚动数组之后才需要逆序的吗?
https://www.luogu.com.cn/problem/P1507
#include <bits/stdc++.h>
using namespace std;
int dp[55][55][55],hs[450],ts[450],k[510];
int main(){
int h,t,n;
cin>>h>>t>>n;
for(int i=1;i<=n;i++){
cin>>hs[i]>>ts[i]>>k[i];
}
for(int i=1;i<=n;i++){
for(int j=h;j>=1;j--){
for(int z=t;z>=1;z--){
if(j>=hs[i]&&z>=ts[i]){
dp[i][j][z]=max(dp[i-1][j][z],dp[i-1][j-hs[i]][z-ts[i]]+k[i]);
}
else dp[i][j][z]=dp[i-1][j][z];
cout<<dp[i][j][z]<<" ";
}
}
cout<<endl;
}
cout<<dp[n][h][t];
return 0;
}