Matrix46. Дана целочисленная матрица размера $$M \times N$$. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести $$0$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
program Matrix46; var a:array [1..10,1..10] of integer; M, N, i, j, i2, i3, j2,j3:Integer; begin Write('N: '); Readln(N); Write('M: '); Readln(M); for i:=1 to M do begin writeln(i,': '); for j:=1 to N do begin Write(j,' : '); Read(a[i,j]); end; end; for i:=1 to M do for j:=1 to N do begin j3:=0; for j2:=1 to N do if a[i,j]<a[i,j2] then inc(j3); i3:=0; for i2:=1 to M do if a[i,j]<a[i2,j] then inc(i3); if ((i3=M-1) and (j3=N-1)) then Writeln (j,':',i,' = ',a[i,j]); end; end. |
Другие задачи из раздела Matrix можно посмотреть здесь.
Неправильно работает. У вас поиск в строках минимального, а нужно максимального (строка 26). Это раз. Два — а что если в строке (или столбце) несколько максимальных (минимальных) элементов? Тогда у вас при сравнении таких одинаковых максимумов (минимумов) строгое сравнение выдаст false. Нужно использовать нестрогое сравнение и добавить чтобы элемент не сравнивался с самим собой. Строка 26:
Строка 29:
поясните за алгоритм верхний — не понял что за магия