L1 048 矩陣A乘以B

2021-08-15 01:25:55 字數 1729 閱讀 3278

給定兩個矩陣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相等時,兩個矩陣才能相乘。輸...