Здравствуйте, помогите пожалуйста составить алгоритм нахождения максимальной длины пилообразной последовательности X[p+1] < X[p+2] >X[p+3] < ... >X[p+k]. Пробовал сделать через второй массив нулей и единиц... Т.е. на месте вершины зуба ставить 1, а на месте основания зуба 0. И считать максимальную длину последовательности, но что то не то!!! Так как в 1 последовательности может быть несколько пилообразных... Подскажите пожалуйста как можно это реализовать... Заранее благодарен.
Я бы сделал примерно так.
Пишем функцию, которая по 3 значениям определяет есть зуб, или нет.
Т. е. функция зуб(X1, X2, X3)
Если ((X1<X2)и(X2>X3))или((X1>X2)и(X2<X3)) то это зуб иначе не зуб.
В основной программе пишем цикл от первого значения до последнего - 2 элемента. В нем проверяем, если сейчас зуб, то увеличиваем счетчик на 1, если не зуб или конец последовательности, то сравниваем значение счетчика с предыдущим максимальным значением, если новое больше, то сохраняем новое значение. Небольшой пример ниже.
Большое спасибо...
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)