社区讨论

萌新刚学dp,不知道为啥这么写dp数组里面全都是0,有大佬可以指导一下吗

P1507NASA的食物计划参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lob675ho
此快照首次捕获于
2023/10/29 15:49
2 年前
此快照最后确认于
2023/11/03 22:17
2 年前
查看原帖
CPP
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int dp[55][55][55];
int w[55];//质量 
int v[55];//体积 
int h[55];//卡路里 
int main()
{int n,vmax,wmax;
scanf("%d%d",&vmax,&wmax);
scanf("%d",&n);
for(register int i=1;i<=n;i++)
   scanf("%d%d%d",&v[i],&w[i],&h[i]);
int maxx=0;
for(register int i=1;i<=n;i++)
   for(register int j=0;j<=vmax;j++)
       for(register int k=0;k<=wmax;k++)
	      {if(j<v[i]||k<w[i]) dp[i][j][k]=dp[i-1][j][k];
	       else
	         {dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-v[i]][k-w[i]]+h[i]);
			 }
	      }
/*for(register int i=1;i<=n;i++)
   {for(register int j=0;j<=vmax;j++)
      {for(register int k=0;k<=wmax;k++)
          printf("%d ",dp[i][j][k]);
        cout<<endl;
	   } 
	cout<<endl;
   }
*/
printf("%d",dp[n][vmax][wmax]);
return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...