用二维dp数组为什么25WA
查看原帖
用二维dp数组为什么25WA
1021348
xianxi楼主2024/9/11 13:51

25WA

#include<bits/stdc++.h>
using namespace std;
int dp[105][10005],n,m,t,L,a[105][105];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t>>n>>m;
	L=m;
	for(int i=1;i<=t;++i)
	{
		for(int j=1;j<=n;++j)cin>>a[i][j];
	}
	for(int i=1;i<t;++i) 
	{
		for(int j=1;j<=n;++j)
		{
			for(int k=0;k<=L;++k)
			{
				if(k>=a[i][j])dp[j][k]=max(dp[j][k],dp[j][k-a[i][j]]+a[i+1][j]-a[i][j]);
			}
		}
		L+=dp[n][L];
		memset(dp,0,sizeof(dp));
	}
	cout<<L;
	return 0;
 } 

100AC

#include<bits/stdc++.h>
using namespace std;
int dp[10005],n,m,t,L,a[105][105];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>t>>n>>m;
	L=m;
	for(int i=1;i<=t;++i)
	{
		for(int j=1;j<=n;++j)cin>>a[i][j];
	}
	for(int i=1;i<=t;++i) 
	{
		for(int j=1;j<=n;++j)
		{
			for(int k=0;k<=L;++k)
			{
				if(k>=a[i][j])dp[k]=max(dp[k],dp[k-a[i][j]]+a[i+1][j]-a[i][j]);
			}
		}
		L+=dp[L];
		memset(dp,0,sizeof(dp));
	}
	cout<<L;
	return 0;
 } 

新手求原因T_T

2024/9/11 13:51
加载中...