2 条题解
-
2
yasuo👀️
这题挺简单的,照着题目写就能AC🎉️
#include <iostream> int main(){ int n,m,k,a[105][105],b[105][105],c[105][105]={}; std::cin>>n>>m>>k; for(int i=0;i<n;i++)for(int j=0;j<m;j++)std::cin>>a[i][j]; for(int i=0;i<m;i++)for(int j=0;j<k;j++)std::cin>>b[i][j]; for(int i=0;i<n;i++)for(int j=0;j<k;j++)for(int t=0;t<m;t++)c[i][j]+=a[i][t]*b[t][j]; for(int i=0;i<n;i++){for(int j=0;j<k;j++)std::cout<<c[i][j]<<" "; puts("");} return 0;}
-
1
算法思路:
- 首先,我们定义三个二维数组A、B和C来表示输入的矩阵以及结果矩阵。
- 接下来,根据输入的行数和列数,使用两层循环读取矩阵A和矩阵B的元素,并分别存储到对应的二维数组中。
- 然后,我们使用三层嵌套的循环遍历矩阵A和矩阵B的所有元素,按照乘法公式计算矩阵C的每个元素。具体而言,外层循环
#include <iostream> using namespace std; const int MAXN = 100; const int MAXM = 100; const int MAXK = 100; int main() { int n, m, k; cin >> n >> m >> k; int A[MAXN][MAXM]; int B[MAXM][MAXK]; int C[MAXN][MAXK]; // 输入矩阵A for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> A[i][j]; } } // 输入矩阵B for (int i = 0; i < m; ++i) { for (int j = 0; j < k; ++j) { cin >> B[i][j]; } } // 计算矩阵C for (int i = 0; i < n; ++i) { for (int j = 0; j < k; ++j) { C[i][j] = 0; for (int x = 0; x < m; ++x) { C[i][j] += A[i][x] * B[x][j]; } } } // 输出矩阵C for (int i = 0; i < n; ++i) { for (int j = 0; j < k; ++j) { cout << C[i][j] << " "; } cout << endl; } return 0; }
- 1
信息
- ID
- 207
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 94
- 已通过
- 51
- 上传者