返回列表 發帖

610 矩陣乘積

1. 題目說明:
請依下列題意進行作答,使輸出值符合題意要求。

2. 設計說明:
請撰寫一程式,讓使用者建立兩個矩陣,先輸入兩個正整數a、b,代表第一個矩陣為a x b矩陣,接著再輸入a x b矩陣的元素;第二個矩陣作法相同,最後輸出兩矩陣相乘的結果,同一列的矩陣元素請使用半形空格隔開,若無法相乘,請輸出「error」。

矩陣乘法:若A是mxn的矩陣,B是nxp的矩陣,則它們的乘積AB是 mxp的矩陣。

公式:

提示:若使用 Java 語言答題,請以「JP」開頭命名包含 main 靜態方法的 class,評測系統才能正確評分。

3. 輸入輸出:
輸入說明
兩組矩陣維度及矩陣元素

輸出說明
兩矩陣相乘的結果

範例輸入1
2 3
1 2 3
4 5 6
3 2
1 2
3 4
5 6

範例輸出1
22 28
49 64


範例輸入2
2 1
5
5
2 3
4 5 6
7 8 9

範例輸出2
error


幫助理解題意的補充範例:

範例輸入3
2 3
1 2 3
4 5 6
3 4
1 2 3 4
2 3 4 1
3 4 1 2

範例輸出3
14 20 14 12
32 47 38 33


610 矩陣乘積.xlsx

本帖隱藏的內容需要回復才可以瀏覽

本帖最後由 何權晉 於 2024-10-11 20:57 編輯
  1. #include<bits/stdc++.h>
  2. using namespace std;

  3. int main()
  4. {
  5.     int a1,b2,a2,b2;
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0;i<a1;i++)
  9.         for(int j=0;j<b1;j++)
  10.         cin>>arr1[i][j];
  11.         
  12.     int arr2[a2][b2]
  13.     for(int i=0;i<a2;i++)
  14.         for(int j=0;j<b2;j++)
  15.         cin>>arr2[i][j];
  16.         
  17.         if(b1!=a2)
  18.             cout<<"error";
  19.         else
  20.         {
  21.             for(int i=0;i<a1;i++)
  22.                 for(int j=0;j<b2;j++)
  23.             {
  24.                 int sum=0;
  25.                 for(int k=0;k<b1;k++)
  26.                     sum+=arr1[i][k]*arr2[k][j];
  27.                 if(j!=0)
  28.                     cout<<" ";
  29.                 cout<<sum;
  30.             }
  31.             cout<<endl;
  32.         }
  33.     return 0;
  34. }
複製代碼

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a1,a2,b1,b2;
  4. int main()
  5. {
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0;i<a1;i++)
  9.     {
  10.         for(int j=0;j<b1;j++)
  11.         {
  12.             cin>>arr1[i][j];
  13.         }
  14.     }
  15.     cin>>a2>>b2;
  16.     int arr2[a2][b2];
  17.     for(int i=0;i<a2;i++)
  18.     {
  19.         for(int j=0;j<b2;j++)
  20.         {
  21.             cin>>arr2[i][j];
  22.         }
  23.     }
  24.     if(b1!=a2)
  25.     {
  26.         cout<<"error"<<'\n';
  27.     }
  28.     else
  29.     {
  30.         for(int i=0;i<a1;i++)
  31.         {
  32.             for(int j=0;j<b2;j++)
  33.             {
  34.                 int sum=0;
  35.                 for(int k=0;k<b1;k++)
  36.                 {
  37.                     sum+=arr1[i][k]*arr2[k][j];
  38.                 }
  39.                 if(j!=0)
  40.                 {
  41.                     cout<<" ";
  42.                 }
  43.                 cout<<sum;
  44.             }
  45.             cout<<endl;
  46.         }
  47.     }
  48.     return 0;
  49. }
複製代碼

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a1,b1,a2,b2;
  4. int main()
  5. {
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0;i<a1;i++)
  9.         for(int j=0;j<b1;j++)
  10.         {
  11.             cin>>arr1[i][j];
  12.         }
  13.     cin>>a2>>b2;
  14.     int arr2[a2][b2];
  15.     for(int i=0;i<a2;i++)
  16.         for(int j=0;j<b2;j++)
  17.         {
  18.             cin>>arr2[i][j];
  19.         }
  20.     if(b1!=a2)
  21.     {
  22.         cout<<"error"<<endl;
  23.     }
  24.     else
  25.     {
  26.         for(int i=0;i<a1;i++)
  27.         {
  28.             for(int j=0;j<b2;j++)
  29.             {
  30.                 int sum=0;
  31.                 for(int k=0;k<b1;k++)
  32.                     sum+=arr1[i][k]*arr2[k][j];
  33.                 if(j!=0)
  34.                     cout<<" ";
  35.                 cout<<sum;
  36.             }
  37.             cout<<endl;
  38.         }
  39.     }
  40.     return 0;

  41. }
複製代碼

TOP

本帖最後由 田家齊 於 2024-10-18 19:34 編輯
  1. #include <bits/stdc++.h>

  2. using namespace std;
  3. int a1,b1,a2,b2;
  4. int main()
  5. {
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0; i<a1; i++)
  9.         for(int j=0; j<b1; j++)
  10.             cin>>arr1[i][j];
  11.     cin>>a2>>b2;
  12.     int arr2[a2][b2];
  13.     for(int i=0;i<a2;i++)
  14.         for(int j=0;j<b2;j++)
  15.             cin>>arr2[i][j];
  16.     if(b1!=a2)
  17.     {
  18.         cout<<"error"<<endl;
  19.     }else
  20.     {
  21.         for(int i=0;i<a1;i++)
  22.         {
  23.             for(int j=0;j<b2;j++)
  24.             {
  25.                 int sum=0;
  26.                 for(int k=0;k<b1;k++)
  27.                    sum+=arr1[i][k]*arr2[k][j];
  28.                 if(j!=0)
  29.                     cout<<" ";
  30.                 cout<<sum;
  31.             }
  32.             cout<<endl;
  33.         }


  34.     }

  35.     return 0;
  36. }
複製代碼

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a1, b1, a2, b2;
  4. int main()
  5. {
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0; i<a1; i++)
  9.         for(int j=0; j<b1; j++)
  10.             cin>>arr1[i][j];
  11.     cin>>a2>>b2;
  12.     int arr2[a2][b2];
  13.     for(int i=0; i<a2; i++)
  14.         for(int j=0; j<b2; j++)
  15.             cin>>arr2[i][j];
  16.     if(b1!=a2)
  17.     {
  18.         cout<<"error"<<endl;
  19.     }else
  20.     {
  21.         for(int i=0; i<a1; i++)
  22.         {
  23.             for(int j=0; j<b2; j++)
  24.             {
  25.                 int sum=0;
  26.                 for(int k=0; k<b1; k++)
  27.                     sum+=arr1[i][k]*arr2[k][j];
  28.                 if(j!=0)
  29.                     cout<<" ";
  30.                 cout<<sum;
  31.             }
  32.             cout<<endl;
  33.         }
  34.     }
  35.     return 0;
  36. }
複製代碼

TOP

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a1,b1,a2,b2;
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0;i<a1;i++)
  9.         for(int j=0;j<b1;j++)
  10.             cin>>arr1[i][j];
  11.     cin>>a2>>b2;
  12.     int arr2[a2][b2];
  13.     for(int i=0;i<a2;i++)
  14.         for(int j=0;j<b2;j++)
  15.             cin>>arr2[i][j];
  16.     if(b1!=a2)
  17.         cout<<"error";
  18.     else{
  19.         for(int i=0;i<a1;i++){
  20.             for(int j=0;j<b2;j++){
  21.                 int sum=0;
  22.                 for(int k=0;k<b1;k++)
  23.                     sum+=arr1[i][k]*arr2[k][j];
  24.                 if(j!=0)
  25.                     cout<<' ';
  26.                 cout<<sum;
  27.             }
  28.             cout<<endl;
  29.         }
  30.     }
  31.     return 0;
  32. }
複製代碼

TOP

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a1,b1,a2,b2;
  6.     cin>>a1>>b1;
  7.     int arr1[a1][b1];
  8.     for(int i=0;i<a1;i++)
  9.         for(int j=0;j<b1;j++)
  10.             cin>>arr1[i][j];
  11.     cin>>a2>>b2;
  12.     int arr2[a2][b2];
  13.     for(int i=0;i<a2;i++)
  14.         for(int j=0;j<b2;j++)
  15.             cin>>arr2[i][j];
  16.     if(b1!=a2)
  17.         cout<<"error";
  18.     else{
  19.         for(int i=0;i<a1;i++){
  20.             for(int j=0;j<b2;j++){
  21.                 int sum=0;
  22.                 for(int k=0;k<b1;k++)
  23.                     sum+=arr1[i][k]*arr2[k][j];
  24.                 if(j!=0)
  25.                     cout<<' ';
  26.                 cout<<sum;
  27.             }
  28.             cout<<endl;
  29.         }
  30.     }
  31.     return 0;
  32. }
複製代碼

TOP

返回列表