How to change all elements of row i and column j in a binary matrix to 0 if cell[i, j] is 0 with PHP

1 Answer

0 votes
function changeRowColumn(&$matrix, $row, $col) {
    $rows = count($matrix);
    $cols = count($matrix[0]);
    
    for ($j = 0; $j < $cols; $j++) {
        if ($matrix[$row][$j] != 0) {
            $matrix[$row][$j] = -1;
        }
    }
    for ($i = 0; $i < $rows; $i++) {
        if ($matrix[$i][$col] != 0) {
            $matrix[$i][$col] = -1;
        }
    }
}

function changeBinaryMatrix(&$matrix) {
    $rows = count($matrix);
    $cols = count($matrix[0]);
    
    if ($rows == 0 || $cols == 0) {
        return;
    }
    
    for ($i = 0; $i < $rows; $i++) {
        for ($j = 0; $j < $cols; $j++) {
            if ($matrix[$i][$j] == 0) {
                changeRowColumn($matrix, $i, $j);
            }
        }
    }
    
    for ($i = 0; $i < $rows; $i++) {
        for ($j = 0; $j < $cols; $j++) {
            if ($matrix[$i][$j] == -1) {
                $matrix[$i][$j] = 0;
            }
        }
    }
}
    
function printMatrix($matrix) {
    $rows = count($matrix);
    $cols = count($matrix[0]);
    
    for ($i = 0; $i < $rows; $i++) {
        for ($j = 0; $j < $cols; $j++) {
            echo $matrix[$i][$j] . " ";
        }
        echo "\n";
    }
}
        
$matrix = array(
            array(1, 1, 0, 1, 1, 1), 
            array(1, 1, 1, 1, 1, 1), 
            array(1, 1, 0, 1, 1, 1), 
            array(1, 1, 1, 1, 1, 1), 
            array(1, 0, 1, 1, 1, 1)
        );
        
changeBinaryMatrix($matrix);

printMatrix($matrix);




/*
run:
 
0 0 0 0 0 0 
1 0 0 1 1 1 
0 0 0 0 0 0 
1 0 0 1 1 1 
0 0 0 0 0 0 
 
*/

 



answered Jan 22, 2024 by avibootz
...