C++二维数组矩阵操作:行乘、列乘及求和

本文介绍如何使用C++对二维数组进行常见的矩阵操作,包括行乘、列乘和计算数组元素总和。

代码示例

#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> a;
int n, m, k, y, x, z;
char s;
long long sum = 0;

int main() {
    cin >> n >> m;
    a.resize(n, vector<int>(m)); // 初始化二维数组
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            z = i * m + j;
            a[i][j] = z;
        }
    }
    cin >> k;
    for (int i = 0; i < k; i++) {
        cin >> s >> x >> y; // 使用cin读取字符
        if (s == 'R') {
            for (int j = 0; j < m; j++) {
                a[x][j] *= y;
            }
        } else if (s == 'S') {
            for (int j = 0; j < n; j++) {
                a[j][x] *= y;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            sum += a[i][j];
        }
    }
    cout << sum << endl;
    return 0;
}

代码解释

  1. 初始化二维数组: 代码首先创建了一个二维数组 a,并使用 resize() 函数将其大小设置为 nm 列。
  2. 输入数据: 代码读取矩阵的行数 n、列数 m 以及操作次数 k
  3. 执行操作: 循环执行 k 次操作,每次操作读取一个字符 s 和两个整数 xy
    • 如果 s 为 'R',则将第 x 行所有元素乘以 y
    • 如果 s 为 'S',则将第 x 列所有元素乘以 y
  4. 计算总和: 遍历整个数组,计算所有元素的总和 sum
  5. 输出结果: 输出最终的总和 sum

问题分析

原始代码中使用 getchar() 读取字符 s,但 getchar() 会读取空格、换行符等空白字符,导致无法正确读取字符。

解决方案

getchar() 替换为 cin >> s 可以解决这个问题,因为 cin >> s 会跳过空白字符,读取实际的字符输入。

C++二维数组矩阵操作:行乘、列乘及求和

原文地址: https://www.cveoy.top/t/topic/807 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录