按行按列求和

10 分钟

把二维数组想成一张表格,a[i][j] 表示第 行、第 列的那个数。求某一行的和,就固定行号 不动,让列号 从 0 扫到 ,一路累加;求某一列的和正好反过来,固定列号 ,让行号 从 0 扫到 。判断哪个下标不变是关键——不变的那个,就是你要求和的"那一行/那一列"的编号。

一次算出所有行、所有列的和:

int a[105][105], n, m;
// 求每一行的和
for (int i = 0; i < n; i++) {
    int s = 0;
    for (int j = 0; j < m; j++) s += a[i][j];
    cout << "第" << i << "行和=" << s << "\n";
}
// 求每一列的和:外层枚举列
for (int j = 0; j < m; j++) {
    int s = 0;
    for (int i = 0; i < n; i++) s += a[i][j];
    cout << "第" << j << "列和=" << s << "\n";
}

两层循环把每个元素访问一遍,时间是 。常见坑:一是行列下标写反,求列和时忘了外层应该枚举列;二是把 a[i][j] 里的 顺序颠倒。做题先在草稿上标清楚" 管行、 管列",就不会乱。

小纸条

求第 2 行的和,哪个下标是固定的?

登录 后可看答案

按行按列求和 · 考级冲刺 · op599 课程