fork(1) download
  1. <?php
  2. $matrix = array(
  3. array(3, 12, 5, 2),
  4. array(3, 14, 16, 12),
  5. array(1, 19, 10, 14)
  6. );
  7. $maxL = array(); // максимальные значения в строках
  8. $lineCnt = count($matrix[0]); // кол-во значений в строке
  9. $tmpMin = array(); // временный массив для "разворота" матрицы на 90°
  10. foreach($matrix as $indx => $line){
  11. $max = max($line);
  12. $maxL[$indx][array_search($max, $line)] = $max;
  13. for($i = 0; $i < $lineCnt; $i++){
  14. $tmpMin[$i][$indx] = $matrix[$indx][$i];
  15. }
  16. }
  17. $minC = array(); // минимальные значения в колонках
  18. foreach($tmpMin as $indx => $line){
  19. $min = min($line);
  20. $minC[$indx][array_search($min, $line)] = $min;
  21. }
  22. $sp = array(); // массив где будут выведены седловые точки или "no", где они не найдены
  23. for($i = 0; $i < count($matrix); $i++){
  24. for($k = 0; $k < $lineCnt; $k++){
  25. if(isset($maxL[$i][$k],$minC[$k][$i])){
  26. $sp[$i][$k] = $maxL[$i][$k];
  27. } else {
  28. $sp[$i][$k] = 'no';
  29. }
  30. }
  31. }
  32. print_r($sp);
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [0] => no
            [1] => 12
            [2] => no
            [3] => no
        )

    [1] => Array
        (
            [0] => no
            [1] => no
            [2] => no
            [3] => no
        )

    [2] => Array
        (
            [0] => no
            [1] => no
            [2] => no
            [3] => no
        )

)