- •Поэлементная обработка (программа должна содержать 1 цикл). Дан массив a[n], найти в нем
- •Наиболее длинную последовательность подряд идущих символов
- •Void main() {
- •Наиболее длинную возрастающую последовательность
- •Void main() {
- •Void main() {
- •Максимальный элемент меньше X
- •Void main() {
- •Количество элементов больше X
- •Void main() {
- •Количество элементов меньше X
- •Void main() {
- •Число элементов в диапазоне от X до y
- •Void main() {
- •Перебор. Дана матрица a[n][n] найти в ней
- •Подматрицу 2*2 с наибольшей суммой элементов
- •Void main() {
- •Int X, y, z; // X - координата по х, у по у, z - это сумма подматрицы. Сюда пишем ответ.
- •Количество элементов больших, чем все соседние элементы
- •Void main() {
- •Int z; // для текущих расчетов.
- •Количество элементов меньших, чем все соседние элементы
- •Void main() {
- •Int z; // для текущих расчетов.
- •Void main() {
- •Void main() {
- •Void main() {
- •По убыванию
- •Void main() {
- •По возрастанию модулей
- •Void main() {
- •По убыванию модулей
- •Void main() {
- •По возрастанию количества единичных бит в двоичном представлении числа
- •Int bits(int X) {
- •Void main() {
- •Поиск (самым простым способом). Даны массивы a[n] и b[m]. Найти
- •Первое вхождение массива b[m] в a[n]
- •Void main() {
- •Количество вхождений массива b[m] в a[n]
- •Void main() {
- •Последнее вхождение массива b[m] в a[n]
- •Void main() {
Поэлементная обработка (программа должна содержать 1 цикл). Дан массив a[n], найти в нем
Наиболее длинную последовательность подряд идущих символов
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);
}
Наиболее длинную возрастающую последовательность
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);
}
количество последовательностей, содержащих три подряд одинаковых символов
среднюю длину последовательностей из 2 и более одинаковых символов
среднюю длину возрастающих последовательностей
Метод разделения (программа должна содержать 1 цикл, с числом повторений примерно log n). Дан упорядоченный по возрастанию массив a[n], найти в нем
минимальный элемент больше 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]);
}
}