假设 数组为{-1 ,2 ,3,4, 8, 9, 3, 12, 11, 0}
此时连续数组共有2,3, 4和8,9和12,11.
此时的结果应为23
涉及两个点,因为数组大小为输入的,所以在这就必须要动态开辟数组,即new
代码如下
#include<iostream>
using namespace std;
int main()
{
int n, i;
int *array;
int add = 0;
int addmax = 0;
cin >> n;
cout << endl;
array = new int[n];
for (i = 0; i < n; i++)
{
cin >> array[i];
cout << " ";
}
cout << endl;
i = 0;
while (i < n)
{
int d = i;
while ((array[i] + 1) == array[i + 1] || (array[i] - 1) == array[i + 1])
{
add = add + array[i];
i++;
}
if (d != i)//此时用到d的原因是,要加上连续数组的最后一个元素,可是若是不进内层循环,那么也会执行加操作,在这里为了避免这种情况,若是不进循环,则d和i相等,所以不进循环
{
add = array[i] + add;
}
if (add>addmax)
{
addmax = add;
}
i++;
add = 0;//进行下一次循环,add起始值要设为0;
}
cout << addmax << endl;
delete array;
system("pause");
return 0;
}
代码给大家学习使用,若代码有不足之处,欢迎大家之处,共同学习。