Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatics_zadachi.doc
Скачиваний:
3
Добавлен:
09.07.2019
Размер:
77.82 Кб
Скачать

  1. Поэлементная обработка (программа должна содержать 1 цикл). Дан массив a[n], найти в нем

    1. Наиболее длинную последовательность подряд идущих символов

Void main() {

int n = 17; // количество элементов

int a[17] = {0, 1, 1, 1, 4, 5, 5, 5, 5, 9, 9, 9, 9, 9, 14, 14, 14};

int i = 0, k = 0;

int koord = 0, len = 0; // текущие координата и длина

int ikoord = 0, ilen = 0; // итоговые координата и длина

for ( i = 0; i < n - 1; i++ ) {

if (a[i] == a[i+1]) {

len++;

} else {

if ( ++len > ilen ) {

ilen = len;

ikoord = i - len + 1;

}

len = 0;

}

}

printf("Koord = %i, len = %i", ikoord, ilen);

}

    1. Наиболее длинную возрастающую последовательность

Void main() {

int n = 17; // количество элементов

int a[17] = {0, 1, 1, 1, 4, 5, 5, 5, 5, 9, 9, 9, 9, 9, 14, 14, 14};

int i = 0, k = 0;

int koord = 0, len = 0; // текущие координата и длина

int ikoord = 0, ilen = 0; // итоговые координата и длина

for ( i = 0; i < n - 1; i++ ) { // проходим по всем элементам массива, кроме последнего

if (a[i] < a[i+1]) { // если совпадают, увеличиваем длину

len++;

} else { // если не совпадают

if ( ++len > ilen ) { // сравниваем с нашим итоговым значением, предварительно увеличив длину на 1 (чтобы не забыть учесть последний символ)

ilen = len; // вписываем в итоговые значения текущие

ikoord = i - len + 1; // если подумать, вот так вот оно.

}

len = 0; // обнуляем

}

}

printf("Koord = %i, len = %i", ikoord, ilen);

}

    1. количество последовательностей, содержащих три подряд одинаковых символов

    2. среднюю длину последовательностей из 2 и более одинаковых символов

    3. среднюю длину возрастающих последовательностей

  1. Метод разделения (программа должна содержать 1 цикл, с числом повторений примерно log n). Дан упорядоченный по возрастанию массив a[n], найти в нем

    1. минимальный элемент больше x

Void main() {

int n = 12; // количество элементов

int a[12] = {0, 3, 7, 12, 18 , 42, 46, 75, 96, 99, 100500, 100501};

int x = 19;

int i = 0, k = 0;

int b = 0, c = n - 1;

while ( b != c && b != c - 1 ) {

i = ( b + c ) >> 1;

k = a[i];

if ( k > x ) {

c = i;

} else {

b = i;

}

}

if (b == c - 1) {

printf("Iskomoe chislo = %i", a[c]);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]