Вопрос Найти наибольшую возрастающую последовательность в массиве С++

Регистрация
2 Окт 2013
Сообщения
95
Репутация
0
Спасибо
1
Монет
0
Допустим, дан массив чисел {4,6,7,4,7,8,9}
Нужно чтобы программа выводила 4,7,8,9. Не прошу писать коды, просто объясните алгоритм. Благодарю
 
Объявляем числа TEMP_ MAX, T_IND, IND и МАХ=0 Два цикла Первый просто перебирает массив от i=0 до конца { TEMP_MAX = 0 Второй перебирает от k=i до конца. { В нем проверяется - является ли элемент k больше k+1. Если да, то TEMP_MAX = TEMP_MAX + 1 T_IND = k } Если TEMP_MAX > MAX, то MAX = TEMP_MAX и IND = T_IND } Выводим массив начиная с i=IND либо до конца, либо до элемента, который будет меньше текущего i Пля, наверное было бы проще написать фрагмент кода? Но ты же просил с объяснениями
 
Рекурсия. Пишите функцию которая выбирает или нет очередное число. Время пропорционально 2^N. Суть: запускаете функцию на первое число два раза. Сначала с параметром выбрать это число, потом с параметром не выбирать. Данная функция вызывает себя но уже для следующего числа также два раза. И так до тех пор пока не будут выбраны все числа, пока выбранное число соответствует критерию отбора (больше предыдущего) или длина текущей последовательности гарантированно меньше уже найденной. Данная функция может заполнять некоторый глобальный массив выбранными значениями. Чтоб удобно было смотреть текущий результат. Как то так.
 
Введи переменную, равную нулю. Найди минимум, больший этой переменной. Выведи значение и присвой его переменной. Повторяй пункт 2, пока не переберёшь все значения.
 
Назад
Сверху