c++给定一个 � × � n×m 的矩阵,如果一个元素为 0 0,则将其所在行和列的所有元素都改为 0 0
时间: 2024-06-17 11:02:30 浏览: 19
要实现将矩阵中为0的元素所在行和列的所有素都改为0,可以按照以下步骤进行操作:
1. 首先,创建一个大小与原矩阵相同的辅助矩阵,用于记录哪些行和列需要被置为0。
2. 遍历原矩阵的每个元素,如果当前元素为0,则将辅助矩阵对应的行和列标记为需要置为0。
3. 再次遍历原矩阵的每个元素,如果当前元素所在的行或列在辅助矩阵中被标记为需要置为0,则将当前元素置为0。
下面是C++代码示例:
```cpp
#include <iostream>
#include <vector>
void setZeroes(std::vector<std::vector<int>>& matrix) {
int rows = matrix.size();
int cols = matrix.size();
std::vector<bool> rowFlag(rows, false); // 记录需要置为0的行
std::vector<bool> colFlag(cols, false); // 记录需要置为0的列
// 遍历原矩阵,记录需要置为0的行和列
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (matrix[i][j] == 0) {
rowFlag[i] = true;
colFlag[j] = true;
}
}
}
// 将需要置为0的行和列对应的元素置为0
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (rowFlag[i] || colFlag[j]) {
matrix[i][j] = 0;
}
}
}
}
int main() {
std::vector<std::vector<int>> matrix = {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}};
std::cout << "原矩阵:" << std::endl;
for (const auto& row : matrix) {
for (const auto& num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
setZeroes(matrix);
std::cout << "置零后的矩阵:" << std::endl;
for (const auto& row : matrix) {
for (const auto& num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
```
运行结果如下:
```
原矩阵:
1 1 1
1 0 1
1 1 1
置零后的矩阵:
1 0 1
0 0 0
1 0 1
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)