Задача к ЕГЭ по информатике на тему «максимум/минимум» №1

Дан целочисленный массив из N  = 50  элементов. Элементы массива различны и могут принимать значения от -10000 до 10000. Опишите на одном из языков программирования алгоритм, который находит и выводит длину наибольшей возрастающей последовательности. Под возрастающей последовательностью подразумеваются подряд идущие элементы, где каждый следующий элемент строго больше предыдущего.

Например, для исходного массива из 6 элементов

-4

5

6

-7

8

2

программа должна вывести

3

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с 0.

|--------------------------------|------------------------------------|-------------------------| |Бейси-к-------------------------|Python------------------------------|А-лгори-тми-ческий-язы-к-| |CON  ST N ASIN   TEGER    = 50  |# допуска ется такж е               |ал г                     | |DIM  A (0TON   − 1)ASLON    G   |# и спользов ать три                |нач                      | |DIM  IASLON    G                |# ц елочисл енны е п еремен ны е i,t,k  ц елN  = 50            | |                                |                                    |                         | |    T ASLON   G                 |a = []                              |  ц елтабa[0 : N − 1]    | |    KASLON     G                |n = 50                              |  ц елi,t,k               | |FORI   = 0T ON  − 1             |foriinrange (0,n) :                 |  н ц дляiот0д оN −  1   | |    IN P U TA (I)               |  a.append (int(input ()))            |     вводa[i]            | |N EXT  I                        |...                                  |  к ц                    | |                                |                                    |                         | |...                              |                                    |...                       | -EN-D------------------------------------------------------------------кон-----------------------

|--------------------------------|------------------------------------| |-П-аскаль-----------------------|C-+-+-------------------------------| |const                           |#include  < iostream  >             | |                                |                                    | |  N  =  50                      |usingnamespacestd;                  | |var                             |constintN  = 50;                    | |  a : array[0..N  − 1]oflongint; |intmain (){                         | |  i,t,k : longint;              |longa[N ];                          | |begin                           |longi,t,k;                          | |                                |                                    | |  f ori := 0toN − 1do           |for(i = 0;i < N ;i + +)cin > > a[i]; | |     readln(a[i]);               |…                                  | |…                              |return0;                            | |end.                            |}                                   | ———————————————————————- » class=»math-display» width=»auto»></center> </p>
<p class= В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

В переменной k  будем хранить длину наибольшей возрастающей последовательности. Так как наименьшая длина последовательности — это 1 (если последовательность состоит из одного элемента), изначально k = 1  .

В цикле for  будем проверять, сколько элементов идет подряд в порядке возрастания. Это количество мы будем хранить в переменной t  . Аналогично длине наибольшей возрастающей последовательности изначально t = 1  . Если a [i] < a[i + 1]  , то есть следующий элемент больше текущего, увеличим t  на 1 (так как мы нашли еще один элемент возрастающей последовательности). Если же это условие не выполнилось, то эта возрастающая последовательность закончилась. Сравним        t  — ее длину — с длиной наибольшей возрастающей последовательности (с k  ). Если t > k  » class=»math» width=»auto»>, обновим <img decoding=. После этого приравняем t  к единице, так как мы начнем рассматривать следующую возрастающую последовательность и искать ее длину.

После цикла выведем k  — длину наибольшей возрастающей последовательности.

Пример на C  + +  :

t = 1, k = 1;

for(i = 0;i < N ;i + + ){

if(a[i] < a[i + 1])t + +;

else{

if(t > k)k = t;  » class=»math» width=»auto»> </p>
<p class= t = 1;

}

}

cout < < k;

Ответ: См.решение
Оцените статью
Я решу все!