萌新求助,还望大佬支援!
查看原帖
萌新求助,还望大佬支援!
690718
HeyLionKing楼主2022/3/13 16:16

我的思路是:把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]; /*a存放 i 组的长度
	                          init对应 i 组的给定数组  */ 
	int i,j,t[T][1]; //t[0]存放初始后0的个数,t[1]存放初始下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];  //数组中连续 1字段的长度 
		}
		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;
 } 
2022/3/13 16:16
加载中...