void setMatrixColAndRowZero(int a[4][4]){ int row = 4; int col = 4; int* rowZero = (int*) malloc(sizeof(int)*row); int* colZero = (int*) malloc(sizeof(int)*col); for(int i = 0; i < row; i++){ for(int j = 0; j < col; j++){ if(a[i][j] == 0){ rowZero[i] = 0; colZero[j] = 0; } } } for(int i = 0; i < row; i++) { if(!rowZero[i]) setRowZero(a,i); } for(int j = 0; j < col; j++) { if(!colZero[j]) setColZero(a,j); } for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { printf("%d\t",a[i][j]); } printf("\n"); } }
void setZeroes(vector<vector<int> > &matrix) { // Start typing your C/C++ solution below // DO NOT write int main() function int m = matrix.size(); if ( m == 0) return; int n = matrix[0].size(); if ( n == 0) return; bool row0zero = rowHasZero(matrix, 0); bool col0zero = colHasZero(matrix, 0); for(int i=1; i < m; ++i) { for (int j=1; j < n; ++j) { //BUG: i=0, j=0; if ( matrix[i][j] == 0) { matrix[0][j] = 0; matrix[i][0] = 0; } } } for(int i=1; i < m; ++i) { //BUG: i=0!!! if ( matrix[i][0] == 0) { setRowZero(matrix, i); } } for(int i=1; i < n; ++i) { if ( matrix[0][i] == 0) { setColZero(matrix, i); } } if (row0zero) { setRowZero(matrix, 0); } if (col0zero) { setColZero(matrix, 0); } }