Zero Matrix
i = [1 2 1]
j = [1 0 3]template<const size_t size1, const size_t size2>
void zero_row_column(array<array<int, size1>, size2> &matrix) {
vector<int> cols;
for (int i = 0; i < size2; i++) {
for (int j = 0; j < size1; j++) {
if (matrix[i][j] == 0) {
// zero out row
for (int z = 0; z < size1; z++) {
matrix[i][z] = 0;
}
// store col
cols.push_back(j);
// next row
break;
}
}
}
unique(cols.begin(), cols.end());
for (int i = 0; i < cols.size(); i++) {
for (int j = 0; j < size2; j++) {
matrix[j][cols.at(i)] = 0;
}
}
}
int main()
{
srand(time(nullptr));
array<array<int, 10>, 15> matrix;
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix.at(i).size(); j++) {
matrix[i][j] = rand() % 70; //[0-9]
}
}
cout << "Matrix:" << endl;
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix.at(i).size(); j++) {
cout << setw(2) << matrix[i][j] << " ";
}
cout << "\n";
}
zero_row_column(matrix);
cout << "Zero Matrix:" << endl;
for (int i = 0; i < matrix.size(); i++) {
for (int j = 0; j < matrix.at(i).size(); j++) {
cout << setw(2) << matrix[i][j] << " ";
}
cout << "\n";
}
}Last updated