Не знаю, как вывести максимальное число подпоследовательностей

176
12 апреля 2019, 02:30

Это задание: вводится последовательность целых чисел. Определить количество элементов в наиболее длинной подпоследовательности подряд идущих чисел, образующих арифметическую прогрессию. Самая БОЛЬШАЯ проблема здесь, как мне кажется, это то, что у меня не получается определить максимальный размер подпоследовательности несколько раз. Один раз вроде получается, но вот 2 и более уже не знаю, как определить.

#include <iostream>
using namespace std;
int main()
{
cout << "Enter sequency of 10 numbers which create the arithetic progression: " << endl;
int x1 = 0, x2 = 0, i = 0, counter = 1, difference = 0;
int max_size1 = 0, max_size2 = 0, MAX_SIZE = 0;
while (i <= 15)
{
    if (max_size2 >= 1) max_size2 = counter;
    else max_size1 = counter;
////////вводим 1й x///////////////////////////////////////////////
    if (i < 15)
    {
        cin >> x1;
        ++i;
        if (i >= 3) { if (counter == 1) difference = x2 - x1; }
    }       
    else { cout << "THAT'S ALL" << endl; break; }
////////сравниваем x1 из прошлой интерации с x1 из этой интерации//
    if (i >= 3)
    {
        if ((x1 - x2) == difference) ++counter;
        else { counter = 1; if (MAX_SIZE > max_size2) max_size2 = counter; }
    }
////////вводим 2й x////////////////////////////////////////////////
    if (i < 15)
    {
        cin >> x2;
        ++i;
        if (counter == 1)  difference = x2 - x1;
    }
    else { cout << "THAT'S ALL" << endl; break; }
////////считаем разность прогрессии////////////////////////////////
    if (i == 2) difference = x2 - x1;
////////сравниваем x1 и x2/////////////////////////////////////////
    if ((x2 - x1) == difference) ++counter; 
    else { counter = 1; if (MAX_SIZE > max_size2) max_size2 = counter; }
////////сравниваем max_size1 и max_size2///////////////////////////
    MAX_SIZE = (max_size1 > max_size2) ? max_size1 : max_size2;
}
cout << "The maximum length of similar numbers is " << MAX_SIZE << endl;
system("pause");
return 0;
}
READ ALSO
Зачем указателю нужно знать, какой тип хранится по адресу?

Зачем указателю нужно знать, какой тип хранится по адресу?

Собственно, зачем мы пишем тип данных перед объявлением переменной-указателя? Если указатели хранят адрес ячейки, то какое им дело, что лежит...

206
Передача данных Android Arduino по Bluetooth

Передача данных Android Arduino по Bluetooth

Мне необходимо только передать пару строк на ардуино, ничего от нее получать не надоНо проблема в том, как только я пытаюсь записать данные...

188
Вопрос новичка по Canvas в Android Studio

Вопрос новичка по Canvas в Android Studio

Ребятки, помогите, пожалуйста, новичку по Android

206
Spring boot не производит автонастройку бинов

Spring boot не производит автонастройку бинов

НЕ получается запустить проект на spring boot ругается что нету многих бинов

300