Vogul wrote:
>
> Не компилил правда, но задача показалась интересной, в своей простоте.
> Просто на обсуждение. Упрощенный вариант, не учитывающий плоские экстемумы.
Условие в if'е больно уж умственное. Что-то спросонья я не могу понять,
чем это лучше чем if( a[i] < a[i+1] && a[i+1] > a[i+2] ).
Кроме того, Ваш вариант не будет работать во всем диапазоне int'а, из-за
переполнения при умножении.
Наверное, Вы математик...
> int max_count(int * a, int size)
> {
> int count = 0;
>
> if(size > 2)
> {
> for(int i = 0; i < size — 2; i++)
> {
> if(((a[i+1] — a[i])*(a[i+2] — a[i+1]) < 0) && ((a[i+1] — a[i]) > 0))
> count++
> }
> return count;
> }else
> {
> return 0;
> }
> }
>
>
>
> Если ввести сохраняемую дельту, то можно и плоские экстремумы
> находить(про них правда ничего не сказано), да проблема с граничными
> условиями решается сама собой.Posted via RSDN NNTP Server 2.0