编译错误
查看原帖
编译错误
393199
Kali_linux楼主2022/5/19 23:02
#include <bits/stdc++.h>
int max(int a, int b)
{
    if (a > b)
        return a;
    return b;
}
int min(int a, int b)
{
    if (a < b)
        return a;
    return b;
}
int f[50][50][50][50] = {-1}, n, m, map[360], card[4];
int dp(int a, int b, int c, int d)
{
    if(f[a][b][c][d] == -1)
    {
        int ans = map[a * 1 + b * 2 + c * 3 + d * 4];
        int x = 0, y = 0, z = 0, t = 0;
        if(a < card[0])
            x = dp(a + 1, b, c, d);
        if(b < card[1])
            y = dp(a, b + 1, c, d);
        if(c < card[2])
            z = dp(a, b, c + 1, d);
        if(d < card[3])
            t = dp(a, b, c, d + 1);
        f[a][b][c][d] = ans + max(max(x, y), max(z, t));
    }
    return f[a][b][c][d];
}
int main(void)
{
	memset(f, -1, sizeof(f));
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++)
        scanf("%d", map + i);
    for (int i = 0; i < m; i++)
    {
        int t;
        scanf("%d", &t);
        card[t - 1]++;
    }
    //printf("%d %d %d %d\n", card[0], card[1], card[2], card[3]);
    printf("%d", dp(0, 0, 0, 0));
    return 0;
}

https://www.luogu.com.cn/record/76048952编译错误,没有任何提示,本地可以通过

2022/5/19 23:02
加载中...