AlbusRiddle @ 2024-12-02 17:29:35
大佬们,这是怎么回事啊。。。我寻思着也没有空指针啊。。。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,len,tmp=0,cnt;
short flag=0;
scanf("%d",&n);
short *a=(short *)malloc(n*n*sizeof(short)+10);
getchar();
while(1)
{
scanf("%d",&len);
for(int i=tmp;i<(tmp+len);i++)
{
a[i]=flag;
}
flag=1-flag;
tmp+=len;
if(getchar()=='\n')break;
}
cnt=0;
for(int i=0;i<(n*n);i++)
{
printf("%hd",a[i]);
cnt++;
if(cnt==n)
{
cnt=0;
printf("\n");
}
}
return 0;
}
by AlbusRiddle @ 2024-12-02 17:30:23
我在自己电脑上一点问题都没有。。。
by zhangyangrui6580 @ 2024-12-05 18:20:05
@[AlbusRiddle](luogu://user/1449687
#include<iostream>
#include<cstring>//事实上没有用
using namespace std;
int main()
{
int n;
cin>>n;
//矩阵长宽
int Map[n*n+10];
//设置一个登记用的数组,其实n*n就够了,+10是为了防爆
int Full;//输入要用的
bool Key=false;
//判断当前输入的是1的数量还是0的数量,初始为0
int p=0;
//已经登记到第几个数,类似于指针
while(cin>>Full)//持续输入
{
int i;
for(i=p;i<p+Full;i++)
Map[i]=Key;//把这一块区域登记为Key,就是0或1
p=i;
Key=!Key;
//本文唯一难点,
/*
*“!”表示相反,
*如果原先为true就变为false
*如果原先为false就变为true
*这里就把“0和1的数量交替输入”体现出来了
*/
}
p=0;
//指针归零,下面要开始从头开始输入
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<Map[p];
p++;
//输出
}
cout<<endl;
/*按格式输出*/
}
}