cf327A

cf327A
这一题理解:给你一个数n,然后接着n个由0或1组成的数,
求一段区间内 0的数-1的数差值最大的区间,然后把0和1互换。
最后数数有几个1。

思路:进行两次for循环,卡区间,然后再一个for循环找目前区间里0与1数目差值的最大值。最后最大值输出即可。
Input

5

1 0 0 1 0

Output

4

Input

4

1 0 0 1

Output

4

 #include <stdio.h>
int main()
{
	int n,i,j,k,a[110];
	int num1=0,num2=0,num3=0,max=-1,x,y;
	int sum=0,t;
	scanf("%d",&n);
	for (i=0; i<n; i++)
	{
		scanf ("%d",&a[i]);
		if (a[i]==1)
			sum++;
	}

	for (i=0; i<n; i++)
	{

		for (j=i; j<n; j++)
		{
			num1=0,num2=0;
			for (k=i; k<=j; k++)
			{
				if (a[k]==0)
					num1++;
				else if (a[k]==1)
					num2++;
			}
			num3=num1-num2;
			if (num3>max)
			{
				
				max=num3;
				x=i;
				y=j;
			}
		}
	}
  
	
	printf("%d\n",max+sum);
	return 0;}
posted @ 2020-07-25 12:05  索饮  阅读(135)  评论(0编辑  收藏  举报