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;
}