Esempio n. 1
0
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");
	}
}
Esempio n. 2
0
 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);
     }
 }