我的方法也是数1,然后把每行的数存起来,每一行数的数量存起来,然后输出的时候,遇到1,该行能连几个1,就把后边的连续改成1就行。
#include <stdio.h>
#include <string.h>
int main(){
int T,n,i,j,k;
int a[10]={0},b[10001]={0},c[10]={0},x=0,y=0,flag=0;
scanf("%d",&T);
for(i=0;i<T;i++){
scanf("%d",&n);
c[x]=n;
for(j=y;j<y+n;j++){
scanf("%d",&b[j]);
a[x]+=b[j];
}
y+=n;
x++;
}
y=0;
for(i=0;i<T;i++){
printf("%d\n",a[i]);
for(j=y;j<y+c[i];j++){
if(flag==0 && b[j]==1){
flag=1;
for(k=0;k<a[i];k++){
b[j+k]=1;
}
}
printf("%d",b[j]);
if(j!=y+c[i]) printf(" ");
}
y+=c[i];
printf("\n");
flag=0;
}
}