Re: найти самую длиную пилооброзную последовательность
От: Рома Мик Россия http://romamik.com
Дата: 05.07.03 21:13
Оценка:
Здравствуйте, Nick_2003, Вы писали:

N_>Последовательность назвается пилообразной, если a1<a2>a3<a4>...>ak или a1>a2<a3>a4<...<ak.

N_>В массиве А(m) найти самую длиную пилооброзную последовательность.

А в чем тут проблема?
Я думаю так ( это не тестировалось ) :
int start = 0, end = 0;
for(int n = 1; n < count - 1; ++n)
{
    int n1 = n;
    while(((a[n - 1] > a[n]) == (a[n] < a[n + 1]) 
        || (a[n - 1] < a[n]) == (a[n] > a[n + 1]))
        && n < count - 1) 
        ++n;
    if(n - n1 > start - end) 
    {
        start = n1 - 1;
        end = n;
    }
    while(((a[n - 1] >= a[n]) == (a[n] >= a[n + 1]) 
        && n < count - 1) 
        ++n;
}
// здесь start и end индексы первого и последнего элемента максимальной пилообразной подпоследовательности
... << RSDN@Home 1.1 alpha 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.