求助dp这有点看不懂
查看原帖
求助dp这有点看不懂
757864
ruye楼主2024/5/20 15:56
        cin >> n >> k;
        for(int i = 1; i <= n; i ++ ) cin >> a[i];
        for(int i = 1; i <= n; i ++ ) 
            for (int j = 0; j <= k; j ++ ) f[i][j] = INF;
        
        for (int i = 1; i <= n; i ++ ) {
            int tmp = INF;
            for (int j = 0; j <= k && j <= i - 1; j ++ ) {
                tmp = min(tmp, a[i - j]);

                int w = tmp * (j + 1);
                for (int d = j; d <= k && d <= i - 1; d ++ )
                    f[i][d] = min(f[i][d], f[i - j - 1][d - j] + w);
            }         
        }

为什么每次让ai - d 到 ai 全部都变成其范围内的最小值 就能递推出正确答案

2024/5/20 15:56
加载中...