10分代码
#include<iostream>
#include<cstdio>
using namespace std;
int a[60],b[60],c[60];
int m[500][500];
int main()
{
int l,t,n;
cin>>l>>t>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i];
}
for(int i=1;i<=n;i++)
{
for(int j=a[i];j<=l;j++)//
{
for(int k=b[i];k<=t;k++)//
{
m[j][k]=max(m[j][k],m[j-a[i]][k-b[i]]+c[i]);
}
}
}
cout<<m[l][t];
return 0;
}
AC代码
#include<iostream>
#include<cstdio>
using namespace std;
int a[60],b[60],c[60];
int m[500][500];
int main()
{
int l,t,n;
cin>>l>>t>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i];
}
for(int i=1;i<=n;i++)
{
for(int j=l;j>=a[i];j--)//
{
for(int k=t;k>=b[i];k--)//
{
m[j][k]=max(m[j][k],m[j-a[i]][k-b[i]]+c[i]);
}
}
}
cout<<m[l][t];
return 0;
}
为什么循环顺序不同就错了???(详见代码内标注)