图像压缩

int length(int x) {
    int len = 0;
    while (x) {
        len++;
        x /= 2;
    }
    return len;
}

void Compress(int n, int p[], int s[], int l[], int b[]) {
    int Lmax = 256, header = 11;
    s[0] = 0;
    for (int i = 1; i <= n; i++) {
        b[i] = length(p[i]);
        int bmax = b[i];
        s[i] = s[i - 1] + bmax;
        l[i] = 1;
        for (int j = 2; j <= i && j <= Lmax; j++) {
            if (bmax < b[i - j + 1]) {
                bmax = b[i - j + 1];
            }
            if (s[i] > s[i - j] + j * bmax) {
                s[i] = s[i - j] + j * bmax;
                l[i] = j;
            }
        }
        s[i] += header;
    }
}

最后更新: 2024年1月2日 21:37:12
创建日期: 2024年1月2日 19:47:42
回到页面顶部