Поиск максимального элемента в строке и минимального в столбце - C#
Формулировка задачи:
Дана таблица a, состоящая из n строк и n столбцов. Требуется определить, есть ли в таблице такой элемент a[i, j], который был бы максимален в i-й строке и минимален в j-м столбце. Если такой элемент есть в таблице, то вывести его координаты. Если таких элементов несколько, то вывести координаты одного из них.
Есть код на Pascal:
Её необходимо написать в C# по образу и подобию кода Pascal. Она работает, но увы и ах, неверно.
Вот что получилось у меня:
Помогите, пожалуйста, выявить ошибку в коде C#.
const n = 4; a: array [1..n, 1..n] of integer = ((10,9,80,7),(11,8,20,11), (9,7,40,1),(13,3,20,6)); var i, j, k, st, min : integer; flag: boolean; begin i := 1; flag := false; while (i <= n) and not flag do begin st := 1; for j := 2 to n do if a[i, j] > a[i, st] then st := j; {нашли максимум по i-й строке, запомним его в переменной min} min := a[i,st]; flag := true; k := 0; repeat inc(k); flag := flag and (a[k, st] >= min); {flag будет равен true, если найденный максимальный элемент является минимальным в столбце st} until (k >= n) or not flag; inc(i) end; if flag then writeln(i-1:3, st:3) else writeln('no'); readln end.
using System; namespace задача { class Program { static void Main() { int n = 5, st = 0, min, k; int[,] a = { { 10, 9, 80, 7 }, { 11, 8, 20, 11 }, { 9, 7, 40, 1 }, { 13, 3, 20, 6 } }; bool flag; int i = 1; flag = false; while ((i <= n) && (flag == false)) { st = 1; for (int j = 1; j < n - 1; j++) if (a[i, j] > a[i, st]) st = j;//нашли максимум по i-й строке, запомним его в переменной min min = a[i, st]; flag = true; k = 0; do { k++; flag = flag && (a[k, st] >= min); } while ((k >= n) || (flag != true)); i++; } if (flag) Console.WriteLine((i-1) + " " + st); else Console.WriteLine("no"); } } }
Решение задачи: «Поиск максимального элемента в строке и минимального в столбце»
textual
Листинг программы
n = 4
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д