求助此题
  • 板块学术版
  • 楼主E1_de5truct0r
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/2/24 15:09
  • 上次更新2023/11/5 02:46:40
查看原帖
求助此题
195198
E1_de5truct0r楼主2021/2/24 15:09

站外题不喜勿喷:题目

我的代码调试了n遍改了一堆bug,然后WA了,最终还是没调对(我直接异或 ToT

#include <bits/stdc++.h>
using namespace std;
#define int long long
int dp[105][105],a[105];
//dp[i][j]表示跳了i步到达j这个位置时所得到的最大价值
signed main()
{
	int T;
	cin>>T;
	while(T--)
	{
		memset(dp,0,sizeof(dp));
		int n,A,B,K;
		cin>>n>>A>>B>>K;
		for(int i=1;i<=n;i++) cin>>a[i];
		dp[0][1]=a[1];
		for(int i=1;i<=K;i++)
			for(int j=1;j<=n;j++)
            	for(int k=A;k<=B;k++)
					if(j-k>=0) dp[i][j]=max(dp[i][j],dp[i-1][j-k]+a[j]);
		
		int maxn=0;
		for(int j=1;j<=n;j++)
			maxn=max(maxn,dp[K][j]);
		cout<<maxn<<endl;
	}
	return 0;
}

求帮助,我太弱了

2021/2/24 15:09
加载中...