#include #include using namespace std;

int main() { int H, W; cin >> H >> W; vector<vector> pixels(H, vector(W)); for (int i = 0; i < H; i++) { for (int j = 0; j < W; j++) { cin >> pixels[i][j]; } }

bool row_deleted = true;
while (row_deleted) {
    row_deleted = false;
    for (int i = 0; i < H - 1; i++) {
        if (pixels[i] == pixels[i + 1]) {
            pixels.erase(pixels.begin() + i + 1);
            H--;
            row_deleted = true;
            break;
        }
    }
}

bool col_deleted = true;
while (col_deleted) {
    col_deleted = false;
    for (int j = 0; j < W - 1; j++) {
        bool same_col = true;
        for (int i = 0; i < H; i++) {
            if (pixels[i][j] != pixels[i][j + 1]) {
                same_col = false;
                break;
            }
        }
        if (same_col) {
            for (int i = 0; i < H; i++) {
                pixels[i].erase(pixels[i].begin() + j + 1);
            }
            W--;
            col_deleted = true;
            break;
        }
    }
}

for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
        cout << pixels[i][j] << " ";
    }
    cout << endl;
}

return 0;
c++有一个H行W列像素组成的图像 从上往下数第i行 从左往右数第j列的像素用aij来表示图像只由黑白两种颜色组成aij=0表示黑色 aij=1表示白色现在想要压缩这个图像 打算按照如下方法压缩如果存在相邻的两行完全一样 就删除其中一行如果存在相邻的两列完全一样 就删除其中一列重复以上操作直到无法再进行删除为止 可以证明最终结果和删除顺序无关代码

原文地址: https://www.cveoy.top/t/topic/fyH5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录