• В массиве А[1..N,1..N] определить номера строки и столбца какой-нибудь седловой точки. Некоторый элемент массива называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце

Ответы 3

  • Массив А[1..N,1..N]
    • Автор:

      riddle
    • 6 лет назад
    • 0
  • const  n = 6; // число строк  m = 6; // число столбцовvar  a: array[1..n, 1..m] of integer;  // основной массив  Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках  Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах   i, j, amin, amax: integer;begin  // заполняем массив А случайными числами  Randomize;  writeln('Исходный массив');  for i := 1 to n do   begin    for j := 1 to m do     begin      a[i, j] := random(100) - 50;      write(a[i, j]:4);    end;    writeln;  end;  // Заполняем массив Rext n x 2  for i := 1 to n do   begin    amin := 10000;  //заведомо больше a[i,j]     amax := -10000; //заведомо меньше a[i,j]    for j := 1 to m do     begin      if amin > a[i, j] then begin        amin := a[i, j]; Rext[i, 1] := j      end;      if amax < a[i, j] then begin        amax := a[i, j]; Rext[i, 2] := j      end    end;  end;  // Заполняем массив Cext 2 x m  for j := 1 to m do   begin    amin := 10000;  //заведомо больше a[i,j]     amax := -10000; //заведомо меньше a[i,j]    for i := 1 to n do     begin      if amin > a[i, j] then begin        amin := a[i, j]; Cext[1, j] := i      end;      if amax < a[i, j] then begin        amax := a[i, j]; Cext[2, j] := i      end    end  end;  writeln;  // Ищем седловые точки  writeln('*** Седловые точки ***');  for i := 1 to n do   begin    j := Rext[i, 1];    if Cext[2, j] = i then      write('[', i, ',', j, '] ')    else begin      j := Rext[i, 2];      if Cext[1, j] = i then        write('[', i, ',', j, '] ')    end  end;  writelnend.Тестовое решениеИсходный массив  10  25  38  38  45  32  42  36 -39  -6   9  48 -25 -37  40  30*** Седловые точки ***[2,2]
    • Автор:

      gina
    • 6 лет назад
    • 0
  • const  N = 5;var  i, j: integer;  a: array[1..N, 1..N] of integer;  min, max: array[1..N] of integer;begin  writeln('Исходный массив: ');  for i := 1 to N do begin    for j := 1 to N do begin      a[i, j] := Random(10);      write(a[i, j] : 3);      if (j = 1) or (max[i] > a[i, j]) then max[i] := a[i, j];      if (i = 1) or (min[j] < a[i, j]) then min[j] := a[i, j];    end;    writeln;  end;  writeln('Седловые точки: ');  for i := 1 to N do    for j := 1 to N do      if max[i] = min[j] then writeln('[', i, '; ', j, ']');end.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years