我的思路是:把0全部替换成1,x-y肯定最小,那么y(修改次数)就是当前数组中0的个数,x(连续1字串的长度)就为当前数组的长度;
只学过c语言,c++等没学过
#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
int a[T],init[T][100000];
int i,j,t[T][1];
int y,x=0;
for(i=0;i<T;i++)
{
scanf("%d",&a[i]);
for(j=0;j<a[i];j++)
scanf("%d",&init[i][j]);
}
for(i=0;i<T;i++)
{
for(j=0;j<a[i];j++)
{
if(init[i][j]==0)
y++;
x=a[i];
}
t[i][0]=x-y;
y=0;
}
for(i=0;i<T;i++)
{
printf("%d\n",t[i][0]);
for(j=0;j<a[i];j++)
printf("1 ");
printf("\n");
}
return 0;
}