测试点三WA了,求助!

P1319 压缩技术

sdjfj32 @ 2024-11-13 16:33:55

#include<bits/stdc++.h>
using namespace std;
int s[210][210],a[114514];
int main()
{
    int n,b=1,x=1,y=1;
    cin>>n;
    while(cin>>a[b])
    {
        b++;
    }
    b--;
    for(int i=1;i<=b;i++)
    {
        if(y==n)
        {
            x++;
            y=1;
        }
        if(i%2==1)
        {
            for(int j=1;j<=a[i];j++)
            {
                s[x][y]=0;
                y++;
                if(y==n)
                {
                    s[x][y]=0;
                    x++;
                    y=0;
                }
            }
        }
        if(i%2==0)
        {
            for(int j=1;j<=a[i];j++)
            {
                s[x][y]=1;
                y++;
                if(y==n)
                {
                    s[x][y]=1;
                    x++;
                    y=0;
                }
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cout<<s[i][j];
        }
        cout<<endl;
    }
}

by chem114514 @ 2024-11-23 22:36:32

#include <bits/stdc++.h>
using namespace std;

int s[210][210]; // 用于存储生成的点阵
int a[114514];   // 存储输入的压缩码

int main() {
    int n, b = 1, x = 1, y = 1;
    cin >> n; // 读取矩阵大小N

    // 循环读取压缩码,直到没有更多输入
    while (cin >> a[b]) {
        b++;
    }

    b--; // 将b调整为实际读入的数量(不包括最后一个未被填充的位置)

    for (int i = 1; i <= b; i++) { 
        if (i % 2 == 1) { // 奇数索引,填充0
            for (int j = 1; j <= a[i]; j++) {
                s[x][y] = 0;
                y++;
                if (y > n) { // 如果到达行末,换行并重置列
                    y = 1;
                    x++;
                }
                if (x > n) break; // 防止越界
            }
        } else { // 偶数索引,填充1
            for (int j = 1; j <= a[i]; j++) {
                s[x][y] = 1;
                y++;
                if (y > n) { // 如果到达行末,换行并重置列
                    y = 1;
                    x++;
                }
                if (x > n) break; // 防止越界
            }
        }
    }

    // 输出结果矩阵,不留空格,每行结束后换行
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cout << s[i][j];
        }
        cout << endl;
    }

    return 0;
}

|