C++按列遍历数组,其中一列因数字相同只输出一次
时间: 2024-05-15 18:12:29 浏览: 65
假设你有一个二维数组 `arr`,行数为 `M`,列数为 `N`,你可以按列遍历它并且只输出每列第一个不同的数字。
这可以通过使用一个 `set` 来完成。具体来说,你可以遍历每列,并将该列中出现的数字插入到一个 `set` 中。如果该数字已经在 `set` 中出现过了,那么就跳过该数字,否则就将它输出并插入到 `set` 中。下面是一段示例代码:
```c++
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main() {
int M, N;
cin >> M >> N;
vector<vector<int>> arr(M, vector<int>(N));
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cin >> arr[i][j];
}
}
for (int j = 0; j < N; j++) {
set<int> s;
for (int i = 0; i < M; i++) {
if (s.count(arr[i][j]) == 0) {
cout << arr[i][j] << " ";
s.insert(arr[i][j]);
}
}
cout << endl;
}
return 0;
}
```
上面的代码首先读入二维数组 `arr`,然后按列遍历它并且只输出每列第一个不同的数字。输出结果以每列为单位,每行输出一个数字。
阅读全文