用的动态规划,只有40分,帮忙看看哪错了
查看原帖
用的动态规划,只有40分,帮忙看看哪错了
816549
52wyd楼主2022/12/2 14:04

悬赏一个关注哦~

#include <stdio.h>

int p[35], f[20010][35] = {0};

int main(void)
{
    int v, n, i, j;
    scanf("%d%d", &v, &n);
    
    for (i = 1; i <= n; i ++)
        scanf("%d", &p[i]);
        
    for (i = 1; i <= n; i ++)
        for (j = 1; j <= v; j ++)
        {
            if (p[i] > j)
                f[i][j] = f[i-1][j];
            if (p[i] == j)
                f[i][j] = (p[i] > f[i-1][j]) ? p[i] : f[i-1][j];
            if (p[i] < j)
                f[i][j] = (p[i] + f[i-1][j-p[i]] > f[i-1][j]) ?
                    p[i] + f[i-1][j-p[i]] : f[i-1][j];
        }
    
    printf("%d\n", v - f[n][v]);
    return 0;
}


2022/12/2 14:04
加载中...