站外题不喜勿喷:题目
我的代码调试了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;
}
求帮助,我太弱了