Здравствуйте. Мне нужно сделать одно задание, но я не могу понять, как это сделать
Задание следующее: Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу (1,1), следующий по величине – в позиции (2, 2), следующий по величине – в позиции (3, 3) и т. д., заполнив, таким образом, всю главную диагональ. Найти номер первой из строк, не содержащих ни одного положительного элемента. Ища решение и объяснение этого задания в интернете, я мало практически ничего не понял. Есть только начальный код с двумерным массивом. Вот код:
<?
$i = $_POST["i"];
$j = $_POST["j"];
// Генерация массива
for ($ii = 0; $ii < $i; $ii++){
for ($jj = 0; $jj < $j; $jj++){
$a[$ii][$jj] = rand(-100, 100);
}
}
?>
<html>
<head>
<meta charset="utf-8">
</head>
<?
print "<h3>Sgenerirovanniy massiv iz ".$i * $j." elementov</h3>";
print "<table cellpadding=\"5\" border=\"1\">";
// Печать индексов индексов столбцов
print "<tr align=\"center\"><td></td>";
for ($jj = 0; $jj < $j; $jj++){
print "<td><font size=\"-3\">".$jj."</font></td>";
}
print "</tr>";
// Печать элементов
for ($ii = 0; $ii < $i; $ii++){
print "<tr><td align=\"center\"><font size=\"-3\">".$ii."</font></td>";
for ($jj = 0; $jj < $j; $jj++){
if ($ii == $jj){
print "<td><b>".$a[$ii][$jj]."</b></td>";
}
else{
print "<td>".$a[$ii][$jj]."</td>";
}
}
print "</tr>";
}
//print "</tr>";
print "</table>";
?>
</html>
Ответы (1 шт):
Сейчас всё поймёте:
Обходите весь массив, ищете максимум, запоминаете его позицию. После обхода всей матрицы меняете элемент [0][0] c элементом в запомненной позиции
Снова обходите массив, пропуская элемент [0][0], находите позицию максимума, меняете с элементом [1][1]
Снова обходите массив, пропуская элементы [0][0] и [1][1], находите позицию максимума, меняете с элементом [2][2]
Повторяете это дело n (размер матрицы) раз