问个关于背包的问题
查看原帖
问个关于背包的问题
495599
CSZD楼主2022/7/9 16:57

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;
}

为什么循环顺序不同就错了???(详见代码内标注)

2022/7/9 16:57
加载中...