momo36524 @ 2024-02-29 17:04:47
#include<stdio.h>
#include<stdbool.h>
int main(void){
int n,if_is_0,if_is_1,i,j,k,mark,pointer=0;
int counter=0;
char outcome[40000];
scanf("%d",&n);
mark=1;//用于标记解码后的是1还是0
while(counter<n*n){
scanf("%d",&k);
counter+=k;
if(mark%2==0){
for(j=0;j<k;j++){
outcome[pointer]=1;
pointer++;
printf("wrong1 mark=%d outcome[%d]=%d\n",mark,pointer,outcome[pointer]);
}
}
else{
for(j=0;j<k;j++){
outcome[pointer]=0;
pointer++;
printf("wrong0 mark=%d outcome[%d]=%d\n",mark,pointer,outcome[pointer]);
}
}
mark++;
}
pointer=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++,pointer++)
printf("%d",outcome[i]);
printf("\n");
}
return 0;
}
by momo36524 @ 2024-02-29 17:24:36
看来题解之后重新写了一个 能过6个测试点 其他的tle了 但是目前最困扰我的还是帖子上的问题 谢谢大家QAQ
#include<stdio.h>
int main(void){
int n,i,j,k,counter,mark=0;
int input[22];
scanf("%d",&n);
for(counter=0,i=0;counter<n*n;i++){
scanf("%d",&input[i]);
counter+=input[i];
}
//对于解码数字的读入没有问题
for(j=0;j<i;j++){
for(k=0;k<input[j];k++){
if(j%2==0)
printf("%d",0);
else printf("%d",1);
mark++;//输出格式没有问题,mark算法一块没有问题
if(mark==n){
mark=0;
printf("\n");
}
}
}
return 0;
}
by Louis_lxy @ 2024-02-29 18:03:11
这题怎么说呢实在太简单了,你直接用bool来输出记得能整除
by Louis_lxy @ 2024-02-29 18:08:06
核心代码的伪代码:
定义变量
输入n
while(输入数据)
{
for (循环k次(k为输入数据))
{
次数加一
输出0或1
if (cnt整除n)
输出换行
}
bool变量取反
}
by momo36524 @ 2024-03-02 10:57:30
@ldh270657080 好的 谢谢!
by momo36524 @ 2024-03-05 17:27:59
@ldh270657080 最近事情比较多 现在才改完 终于AC了 感谢巨佬
#include<stdio.h>
int main(void){
int i,j,k,n,if_is_0=1;
int counter=0;
int column=0;
scanf("%d",&n);
while(counter<n*n){
scanf("%d",&k);
counter+=k;
if(if_is_0==1){
for(i=0;i<k;i++){
printf("%d",0);
column++;
if(column==n){
printf("\n");
column=0;
}
}
}
else{
for(i=0;i<k;i++){
printf("%d",1);
column++;
if(column==n){
printf("\n");
column=0;
}
}
}
if_is_0=!if_is_0;
}
return 0;
}