求助
查看原帖
求助
359430
江户川コナン楼主2021/8/8 21:59

求助大佬!不知道为什么样例都过不了

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=45;
int n,m,x,a[355],cost[5],dp[maxn][maxn][maxn][maxn];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>x;
        cost[x]++;
    }
    //dp[0][0][0][0]=a[1];
    for(int i=0;i<=cost[1];i++){
        for(int j=0;j<=cost[2];j++){
            for(int k=0;k<=cost[3];k++){
                for(int l=0;l<=cost[4];l++){
                    int t=1+i+2*j+3*k+4*l;
                    if(i!=0) dp[i][j][k][l]=max(dp[i][j][k][l],dp[i-1][j][k][l]+a[t]);
                    if(j!=0) dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j-1][k][l]+a[t]);
                    if(k!=0) dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j][k-1][l]+a[t]);
                    if(l!=0) dp[i][j][k][l]=max(dp[i][j][k][l],dp[i][j][k][l-1]+a[t]);
                }
            }
        }
    }
    cout<<dp[cost[1]][cost[2]][cost[3]][cost[4]]<<endl;
    return 0;
}

恳请各位神犇/大佬指点迷津

2021/8/8 21:59
加载中...