问题描述
在一个 n 行 m 列的二维数组中,有若干奇数和偶数,请编程统计出这个二维数组中,奇数和偶数分别有多少个?
输入
第一行是两个整数 n 和 m ( n 和 m 都是 2∼100 之间的整数),代表接下来的二维数组有 n 行 m 列。
接下来 n 行,每行有 m 个整数。(这些整数都是 0∼9999 之间的整数)
输出
两个整数用空格隔开,分别代表二维数组中奇数、偶数的个数。
样例
输入
2 2 2 3 4 6
输出
1 3
代码:
#include <iostream>
using namespace std;
int main() {
int n, m, num, odd = 0, even = 0;
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> num;
(num % 2 == 0) ? even++ : odd++;
}
}
cout << odd << " " << even;
return 0;
}
解题步骤:
- 读取二维数组的行列数
n
和m
- 初始化奇偶计数器
odd
和even
为0 - 使用双层循环遍历每个元素:
- 外层循环控制行数(执行n次)
- 内层循环控制列数(每行执行m次)
- 对每个输入数字进行取模判断:
- 能被2整除则归为偶数(even+1)
- 否则归为奇数(odd+1)
- 最后输出两个计数器的结果
时间复杂度:O(n \times m)
空间复杂度:O(1)(仅使用固定数量的变量)