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

    1. Подматрицу 2*2 с наибольшей суммой элементов

Void main() {

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

int arr[4][4] = {

{1, 2, 3, 4},

{5, 6, 8, 9},

{6, 3, 4, 5},

{3, 2, 8, 3}

};

int i = 0, j = 0, k; // "счетчики" для циклов. k - сумма подматрицы. Здесь текущее решение.

Int X, y, z; // X - координата по х, у по у, z - это сумма подматрицы. Сюда пишем ответ.

z = arr[0][0] + arr[0][1] + arr[1][0] + arr[1][1]; // задаем начальное значение для суммы.

for (i=0; i<n-1; i++) { // именно n-1, иначе вылезем за пределы массива, когда используем i+1 и j+1

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

k = arr[i][j] + arr[i+1][j] + arr[i][j+1] + arr[i+1][j+1];

if (k > z) {

z = k;

x = j;

y = i;

}

}

}

printf("Koordinaty samoi bolshoi matricy 2x2: x=%i y=%i summa=%i", x, y, z);

// не забываем, что координаты считаются с нуля

}

    1. Количество элементов больших, чем все соседние элементы

Void main() {

// считаем, что соседние элементы - это слева, справа, сверху, снизу

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

int arr[4][4] = {

{1, 200, 3, 4},

{5, 6, 8, 900},

{6, 3, 100500, 5},

{3, 2, 8, 3}

};

int i = 0, j = 0, k = 0; // "счетчики" для циклов. k - искомое количество.

Int z; // для текущих расчетов.

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

for (j=0; j<n; j++) {

z = 0;

if (i>0) z+=arr[i-1][j];

if (j>0) z+=arr[i][j-1];

if (i<n-1) z+=arr[i+1][j];

if (j<n-1) z+=arr[i][j+1];

if (arr[i][j] > z) k++;

}

}

printf("Iskomoe kolichestvo = %i", k);

}

    1. Количество элементов меньших, чем все соседние элементы

Void main() {

// считаем, что соседние элементы - это слева, справа, сверху, снизу

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

int arr[4][4] = {

{1, 200, 3, 4},

{5, 6, 8, 900},

{6, 3, 100500, 5},

{3, 2, 8, 3}

};

int i = 0, j = 0, k = 0; // "счетчики" для циклов. k - искомое количество.

Int z; // для текущих расчетов.

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

for (j=0; j<n; j++) {

z = 0;

if (i>0) z+=arr[i-1][j];

if (j>0) z+=arr[i][j-1];

if (i<n-1) z+=arr[i+1][j];

if (j<n-1) z+=arr[i][j+1];

if (arr[i][j] < z) k++;

}

}

printf("Iskomoe kolichestvo = %i", k);

}

    1. количество элементов, равных своему номеру строки

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