//最大连续1的个数
int get(int* nums, int numsSize)
{
//遍历元素,找到元素0
int i = 0;
int j = 0;
int max = 0;
int sum = 0;
for (i = 0; i < numsSize; i++)
{
//在这初始化为0,方便遍历元素,防止个数混乱
int win = 0;//计算0左边1的个数
int cont = 0;//计算0右边1的个数
//如果为0,则计算0左右两边1的个数
if (nums[i] == 0)
{
//计算左边1的个数
for (j = i-1; j >= 0; j--)
{
if (nums[j] == 1)
{
win++;
//这里是假设第一次的个数就为最终的个数
//然后依次与之后计算的个数对比,更新max
//最后max的结果就为左边最多的个数
if (max < win)
{
max = win;
}
}
//如果进来的元素发现为0,那左边计算1个数就结束
else
{
break;
}
}
//计算右边1的个数
for (j = i + 1; j <numsSize; j++)
{
if (nums[j] == 1)
{
cont++;
//这里是假设第一次的个数就为最终的个数
//然后依次与之后计算的个数对比,更新sum
//最后sum的结果就为右边最多的个数
if (sum < cont)
{
sum = cont;
}
}
else
{
break;
}
}
}
}
//如果max、sum的值都没变化
//那就代表数组中的元素要么全为0,要么全为1
if (max == 0 && sum == 0)
{
//如果全为1,那我们根据题目要求,返回元素个数就可以了
if (nums[0] == 1)
{
return numsSize;
}
//如果全为0,那就代表数组中无1,那我们就返回0
else
return 0;
}
return max > sum ? max : sum;//利用条件运算符,判断左右两边哪一边的个数多
//那就是1的最大连续
}
int main()
{
//定义一个二进制数组
int nums[1] = { 0 };
//计算元素个数
int numsSize = sizeof(nums) / sizeof(nums[0]);
//输入元素
int i = 0;
for (i = 0; i < numsSize; i++)
{
scanf("%d,", &nums[i]);
}
//调用函数实现
int arr = get(nums, numsSize);
printf("%d\n", arr);
return 0;
}