給定兩個矩陣a和
b,要求你計算它們的乘積矩陣
ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有
ra行、
ca列,b有
rb行、
cb列,則只有ca與
rb相等時,兩個矩陣才能相乘。
輸入格式:
輸入先後給出兩個矩陣a和
b。對於每個矩陣,首先在一行中給出其行數
r和列數
c,隨後
r行,每行給出
c個整數,以
1個空格分隔,且行首尾沒有多餘的空格。輸入保證兩個矩陣的r和
c都是正數,並且所有整數的絕對值不超過
100。
輸出格式:
若輸入的兩個矩陣的規模是匹配的,則按照輸入的格式輸出乘積矩陣
ab,否則輸出
「error: ca != rb」
,其中ca是a
的列數,rb是
b的行數。
輸入樣例
1:
2 3
1 2 3
4 5 6
3 47 8 9 0
-1 -2 -3 -4
5 6 7 8
輸出樣例
1:
2 4
20 22 24 16
53 58 63 28
輸入樣例
2:
3 2
38 26
43 -5
0 17
3 2-11 57
99 68
81 72
輸出樣例
2:
error: 2 != 3
這個題首先得搞懂矩陣是怎麼相乘的,公式如下:
搞明白這個後就開始做啦,因為是輸出二維陣列考慮三個for迴圈。
具體**如下:
#include
#include
intmain()
int a[100][100],b[100][100],c[100][100];//定義三個陣列,c[100][100]用來存放他們乘積後的值
int a1,a2,b1,b2,i,j,k,sum=0,h1=0,h2=0;
scanf("%d%d",&a1,&a2);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
scanf("%d%d",&b1,&b2);
for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);
if(a2!=b1)
printf("error: %d !=%d\n",a2,b1);//判斷輸入的陣列是否符合題目要求
else
for(k=0;kfor(i=0;isum=0;
for(j=0;jsum=sum+a[k][j]*b[j][i];//用來實現a陣列的行與b陣列的列相乘,
c[k][i]=sum;//來記錄每次乘積後的數
h1=k;
h2=i;
printf("%d %d\n",h1+1,h2+1);
for(i=0;ifor(j=0;jprintf("%d",c[i][j]);//根據題目要求最後乙個沒空格,所以這樣實現
printf("%d\n",c[i][b2-1]);
return 0;
L1 048 矩陣A乘以B
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有ra行 ca列,b有rb行 cb列,則只有ca與rb相等時,兩個矩陣才能相乘。輸...
L1 048 矩陣A乘以B
給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有ra行 ca列,b有rb行 cb列,則只有ca與rb相等時,兩個矩陣才能相乘。輸入先後給出兩個矩陣a和b。對於每個矩陣,首先在一行中給出其行數r和列數c,隨後r行,每行給出c個整數,以1個空格分隔,...
L1 048 矩陣A乘以B
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有ra行 ca列,b有rb行 cb列,則只有ca與rb相等時,兩個矩陣才能相乘。輸...