2 2 2
2 2 2
2 2 2
#include <iostream>
using namespace std;
int main()
int n,m,k;
int i,j,l;
cin>>n>>m>>k;
int a[n+1][m+1],b[m+1][k+1],c[n+1][k+1]={0};
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=m;i++)
for(j=1;j<=k;j++)
cin>>b[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
for(l=1;l<=m;l++)
c[i][j]+=a[i][l]*b[l][j];
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
cout<<c[i][j]<<" ";
cout<<endl;
return 0;
【题目描述】计算两个矩阵的乘法。n×m阶的矩阵A乘以m×k阶的矩阵B得到的矩阵C 是n×k阶的,且C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + …… +A[i][m-1]×B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。【输入】第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100。 然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,矩阵中每个元素的绝对值不会大于1000。【输出】输出矩阵
编写一个函数实现M行K列矩阵与K行N列矩阵的乘法。设A为M行K列矩阵,B为K行N列矩阵,则C=A×B,乘积C为M行N列矩阵。
(阵乘法的规则是:设A[m,k],B[k,n],则C[m,n]= A[m,k] ×B[k,n]。)
问题分析:定义两个二维矩阵A[X][X],B[X][X],输入A B的元素,C[i][j]=∑A[i][k]*B[k][i],最后输出C。
void MatrixMultiple(float matrix1[MATRIX1_ROW][MATRIX1_COL], float matrix2[MATRIX2_ROW][MATRIX2_COL], float getMatrixMultiple[MATRIX1_ROW][MATRIX2_COL])
//vector<Vec3f> robotPoint;
memset(getMatrixMultiple,
##逆矩阵的性质和求法
逆矩阵的性质
性质1: A可逆⇒∣A−1∣=1∣A∣A可逆\Rightarrow|A^{-1}| = \frac{1}{|A|}A可逆⇒∣A−1∣=∣A∣1
性质2: A可逆⇒A−1可逆,(A−1)−1=AA可逆\Rightarrow A^{-1}可逆, (A^{-1})^{-1}=AA可逆⇒A−1可逆,(A−1)−1=A
性质3: AB=E(orBA=E)⇒B=A−1AB=E(or BA=E) \Rightarrow B=A^{-1}AB=E(orBA=E)⇒B=A−1
我们在这一篇《模式识别、推荐系统中常用的两种矩阵分解-----奇异值分解和非负矩阵分解 》中详细介绍了矩阵奇异值分解的数学证明,我们沿用这一篇的博文的符号,继续讨论这一章的内容。
矩阵的奇异值分解定理:
设矩阵,秩为,,则该矩阵可以分解为:
也可以表示为:
【题目描述】
计算两个矩阵的乘法。n×m阶的矩阵A乘以m×k阶的矩阵B得到的矩阵C 是n×k阶的,且C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + …… +A[i][m-1]×B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。
第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100。
提交数: 14556 通过数: 7513
【题目描述】
计算两个矩阵的乘法。n×m阶的矩阵A乘以m×k阶的矩阵B得到的矩阵C 是n×k阶的,且C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + …… +A[i][m-1]×B[m-1]j。
第一行为...
int A[size][size], B[size][size], C[size][size], D[size][size];
int E[size][size], F[size][size], G[size][size], H[size][size];
int P1[size][size], P2[size][size], P3[size][size], P4[size][size], P5[size][size], P6[size][size], P7[size][size];
int tmp1[size][size], tmp2[size][size];
// 拆分矩阵
int i, j;
for (i = 0; i < size; i++) {
for (j = 0; j < size; j++) {
A[i][j] = a[i][j];
B[i][j] = a[i][j + size];
C[i][j] = a[i + size][j];
D[i][j] = a[i + size][j + size];
E[i][j] = b[i][j];
F[i][j] = b[i][j + size];
G[i][j] = b[i + size][j];
H[i][j] = b[i + size][j + size];
// 计算P1到P7
sub_matrix(F, H, tmp1);
strassen_mul(A, tmp1, P1);
add_matrix(A, B, tmp1);
strassen_mul(tmp1, H, P2);
add_matrix(C, D, tmp1);
strassen_mul(tmp1, E, P3);
sub_matrix(G, E, tmp1);
strassen_mul(D, tmp1, P4);
add_matrix(A, D, tmp1);
add_matrix(E, H, tmp2);
strassen_mul(tmp1, tmp2, P5);
sub_matrix(B, D, tmp1);
add_matrix(G, H, tmp2);
strassen_mul(tmp1, tmp2, P6);
sub_matrix(A, C, tmp1);
add_matrix(E, F, tmp2);
strassen_mul(tmp1, tmp2, P7);
// 计算结果矩阵
add_matrix(P5, P4, tmp1);
sub_matrix(tmp1, P2, tmp2);
add_matrix(tmp2, P6, c[0]);
add_matrix(P1, P2, c[1]);
add_matrix(P3, P4, c[2]);
add_matrix(P5, P1, tmp1);
sub_matrix(tmp1, P3, tmp2);
sub_matrix(tmp2, P7, c[3]);
int main()
int a[N][N] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int b[N][N] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int c[N][N];
int i, j;
strassen_mul(a, b, c);
printf("Result:\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d ", c[i][j]);
printf("\n");
return 0;
本代码中定义了THRESHOLD变量,当矩阵大小小于等于阈值时,使用标准
矩阵乘法算法计算。简单起见,本代码中矩阵大小固定为4 * 4,可以根据需要修改。
#include <bits/stdc++.h> using namespace std; int main(){ int a,b,c; cin>>a>>b; c=a; a=b; b=c; cout<<"a="<<a<<" "<<"b="<<b; return 0; }
Eason魏宇轩
要借助另一个变量
#include <bits/stdc++.h> using namespace std; int main(){ int a,b,c; cin>>a>>b; c=a; a=b; b=c; cout<<"a="<<a<<" "<<"b="<<b; return 0; }
[恭喜发财]
[Done]
Eason魏宇轩
#include<bits/stdc++.h> using namespace std; int main(){ int a,b,c; cin>>a>>b; c=a; a=b; b=c; cout<<a<<" "<<b; return 0; }
#include <bits/stdc++.h> using namespace std; int main(){ int a,b,c; cin>>a>>b; c=a; a=b; b=c; cout<<"a="<<a<<" "<<"b="<<b; return 0; }
[100分]
亿条小咸鱼
可以100分,但变量没变。
陆星辰练习生
[Done]
他不输出,我没办法。
要个中间值
许祺峥(许祺峥)
#include<bits/stdc++.h>
[加一][加一]
必须喝雪碧
[忙疯了]
戴瑞辰(朱文平)
马子恒+张家港市杨舍实验学校
借一个空杯
#include <bits/stdc++.h> using namespace std; int main() { int a,b,c; cin>>a>>b; c=a; a=b; b=c; cout<<