救命!!!
查看原帖
救命!!!
550816
Freddymo楼主2021/8/24 15:46
#include <bits/stdc++.h>
using namespace std;
const int maxn=50;
int main()
{
    int n,m,x;
    cin>>n>>m;
    int a[n],b[m];
    int dp[maxn][maxn][maxn][maxn];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    dp[0][0][0][0]=a[1];
    for(int i=1;i<=m;i++)
    {
        cin>>x;
        b[i]++;
    }
    for(int i=0;i<=b[1];i++)
    {
        for(int j=0;j<=b[2];j++)
        {
            for(int q=0;q<=b[3];q++)
            {
                for(int p=0;p<=b[4];p++)
                {
                    int k=1+i+j*2+q*3+p*4;
                    if(i!=0)
                    {
                        dp[i][j][q][p]=max(dp[i][j][q][p],dp[i-1][j][q][p]+a[k]);
                    }
                    if(j!=0)
                    {
                        dp[i][j][q][p]=max(dp[i][j][q][p],dp[i][j-1][q][p]+a[k]);
                    }
                    if(q!=0)
                    {
                        dp[i][j][q][p]=max(dp[i][j][q][p],dp[i][j][q-1][p]+a[k]);
                    }
                    if(p!=0)
                    {
                        dp[i][j][q][p]=max(dp[i][j][q][p],dp[i][j][q][p-1]+a[k]);
                    }
                }
            }
        }
    }
    cout<<dp[b[1]][b[2]][b[3]][b[4]];
    return 0;
}
2021/8/24 15:46
加载中...