1 条题解

  • 0
    @ 2098-10-22 12:34:39

    【深基5.习9】压缩技术

    解题思路

    压缩段从 0 开始交替。每读到段长 len 就输出 len 个当前位,每累计输出 N 个字符换行,再切换当前位。

    正确性说明

    按段长展开恢复原行优先序列,按每 N 位换行恰好重建 N×N 点阵。

    易错点

    第一段可以为 0;跨行不切换位,只有读完一段才切换。

    复杂度

    时间 O(N²),额外空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        int len, bit = 0, pos = 0;
        while (cin >> len) {
            for (int i = 0; i < len; i++) {
                cout << bit;
                pos++;
                if (pos % n == 0)
                    cout << "\n";
            }
            bit ^= 1;
        }
        return 0;
    }
    
    • 1