Максимальный элемент среди минимальных элементов столбцов матрицы

Задача

Найти максимальный элемент среди минимальных элементов столбцов матрицы.

Пояснение к задаче и алгоритм решения

В одной из переменных будем сохранять минимальный элемент текущего столбца. После того, как столбец просмотрен, будем сравнивать его значение со значением переменной, предусмотренной для хранения максимального элемента среди минимальных.

Начальными значениями этих переменных должны быть: для хранения текущего минимума - большее значение, чем максимально возможное; для хранения максимума среди минимумов - меньшее значение, чем минимально возможное. Например, если диапазон матрицы от 0 до 199, то одной переменной надо присвоить 200, а другой -1.

Поскольку перебираются столбцы, то во внутреннем цикле меняется значение переменной, отвечающей за строки. При выводе же матрицы на экран осуществляем обычный построчный вывод.

Исходный код на языке программирования Pascal

const
    M = 10;
    N = 5;
var
    a: array[1..N,1..M] of integer;
    i,j: byte;
    max, min: integer;
begin
    randomize;
    max := -1;
    for j:=1 to M do begin
        min := 200;
        for i:=1 to N do begin
            a[i,j] := random(200);
            if a[i,j] < min then
                min := a[i,j];
        end;
        if min > max then
            max := min;
    end;
    for i:=1 to N do begin
        for j:=1 to M do
            write(a[i,j]:5);
        writeln;
    end;
    writeln('Maximum of the minimum: ', max);
end.

Особенности решения на языке программирования Pascal

Пример(ы) выполнения программы на языке Pascal:

  111  148  189    3   49  197  192   39   51   78
   51  172   53  103  175   25  122   34   80  165
   68  173  141   82   74  132   59  179   59  151
  175  120  138  173   36  101  167  189  173  198
  172  151   37    1   46  126   83  183   38   83
Maximum of the minimum: 120

Мы видим, что во втором столбце минимальный элемент равен 120 и это максимум среди минимумов других столбцов. Т.е. в других столбцах минимальный элемент меньше, чем 120.

Исходный код на языке программирования C

#include <stdio.h>
#define M 10
#define N 5
main() {
    int a[N][M], i, j, max, min;
    srand(time(NULL));
    max = -1;
    for (j=0; j<M; j++) {
        min = 200;
        for (i=0; i<N; i++) {
            a[i][j] = rand() % 200;
            if (a[i][j] < min) min = a[i][j];
        }
        if (min > max) max = min;
    }
    for (i=0; i<N; i++) {
        for (j=0; j<M; j++)
            printf("%4d", a[i][j]);
        printf("\n");
    }
    printf("Максимальный среди минимальных: %d\n", max);
}

Пример(ы) выполнения программы на языке C

  34 100   0  54  58 159 109  19  63  37
  85 113 191  77 127 146 140 174  79 108
 164 155  38 178 109 180   6  80 137 195
  74 171  86 190  75 154  73 126  53  15
  12 183 148 108 198 169  15 145 165  50
Максимальный среди минимальных: 146

Особенности решения на языке программирования C

В шестом столбце минимальный элемент 146. В других столбцах минимальные элементы меньше 146-ти.

Исходный код на языке программирования Python

from random import random
M = 10
N = 5
a = []
for i in range(N):
    b = []
    for j in range(M):
        n = int(random()*200)
        b.append(n)
        print('%4d' % n,end='')
    a.append(b)
    print()
 
mx = -1
for j in range(M):
    mn = 200
    for i in range(N):
        if a[i][j] < mn:
            mn = a[i][j]
    if mn > mx:
        mx = mn
print("Максимальный среди минимальных: ", mx)

Особенности решения на языке программирования Python

Пример(ы) выполнения программы на языке Python:

 104  60  85 107 189 194   2 143  65 117
 109  74 186 102 166 133 169 117  94 190
 152  20  63  98   1  93  81 109  23  86
  89 186 191 176  67   7   3 109 120  66
  89 185  86 167  16   3 163  62  24  84
Максимальный среди минимальных:  98

В четвертом столбце минимальный элемент равен 98. Во всех других столбцах минимальные элементы меньше этого значения.

Исходный код на языке программирования КуМир

алг максимальный среди минимальных
нач
  цел M=10, N=5
  цел таб a[1:N, 1:M]
  цел i, j, mx, mn
  mx := 99
  нц для j от 1 до M
    mn := 200
    нц для i от 1 до N
      a[i,j] := int(rand(100,200))
      если a[i,j] < mn то mn := a[i,j] все
    кц
    если mn > mx то mx := mn все
  кц
  нц для i от 1 до N
    нц для j от 1 до M
      вывод a[i,j], " "
    кц
    вывод нс
  кц
  вывод "Максимальный среди минимальных элементов столбцов: ", mx
кон

Пример(ы) выполнения программы на языке КуМир

173 153 165 176 116 124 179 143 175 132
154 162 196 173 109 164 120 179 105 180
135 124 116 169 116 167 188 104 106 129
149 111 117 105 180 163 147 198 178 150
195 171 168 116 141 195 111 169 132 109
Максимальный среди минимальных элементов столбцов: 135

Особенности решения задачи в среде КуМир

В первом столбце минимальный элемент 135. Во всех других столбцах минимальные элементы меньше.

Исходный код на языке программирования Basic

M = 10
N = 5
dim a(N,M)
max = 9
for j=0 to M-1
        min = 100
        for i=0 to N-1
                a[i,j] = int(rand * 90)+10
                if a[i,j]<min then min=a[i,j]
        next i
        if min > max then max = min
next j
for i=0 to N-1
        for j=0 to M-1
                print a[i,j] + "  ";
        next j
        print
next i
print "Максимальный среди минимальных: " + max

Пример(ы) выполнения программы на языке Basic

98  69  65  66  15  25  39  30  12  93  
17  97  66  30  40  39  58  46  81  41  
31  38  64  20  30  13  14  12  27  99  
25  43  30  38  71  67  13  29  36  20  
59  66  51  86  98  74  94  29  19  79  
Максимальный среди минимальных: 38

Особенности решения на языке программирования Basic

Во втором столбце минимум равен 38. В других столбцах минимумы меньше.

Тема

Матрицы

Уровень сложности

Средний

Дата публикации