package main
import (
"fmt"
)
func changeRowColumn(matrix [][]int, row, col int) {
rows := len(matrix)
cols := len(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
}
}
}
func changeBinaryMatrix(matrix [][]int) {
rows := len(matrix)
if rows == 0 {
return
}
cols := len(matrix[0])
if 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
}
}
}
}
func printMatrix(matrix [][]int) {
for _, row := range matrix {
for _, val := range row {
fmt.Printf("%d ", val)
}
fmt.Println()
}
}
func main() {
matrix := [][]int{
{1, 1, 0, 1, 1, 1},
{1, 1, 1, 1, 1, 1},
{1, 1, 0, 1, 1, 1},
{1, 1, 1, 1, 1, 1},
{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
*/