返回列表 發帖

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

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

  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.         }
  20.         else
  21.         {
  22.             for(int i=0; i<a1; i++)
  23.             {
  24.                 for(int j=0; j<b2; j++)
  25.                 {
  26.                     int sum=0;
  27.                     for(int k=0; k<b1; k++)
  28.                         sum+=arr1[i][k]*arr2[k][j];
  29.                     if(j!=0)
  30.                         cout<<" ";
  31.                     cout<<sum;
  32.                 }
  33.                 cout<<endl;
  34.             }
  35.         }
  36.         return 0;
  37. }
複製代碼

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) cout<<"error";
  17.      else
  18.      {
  19.          for(int i=0;i<a1;i++)
  20.          {
  21.              for(int j=0;j<b2;j++)
  22.              {
  23.                  int sum=0;
  24.                  for(int k=0;k<b1;k++)
  25.                     sum+=arr1[i][k]*arr2[k][j];
  26.                  if(j!=0) cout<<" ";
  27.                  cout<<sum;
  28.              }
  29.              cout<<endl;
  30.          }
  31.      }
  32.     return 0;
  33. }
複製代碼

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.     }
  20.     else
  21.     {
  22.         for(int i=0;i<a1;i++)
  23.         {
  24.             for(int j=0;j<b2;j++)
  25.             {
  26.                 int sum=0;
  27.                 for(int k=0; k<b1; k++)
  28.                     sum+=arr1[i][k]*arr2[k][j];
  29.                 if(j!=0)
  30.                     cout<<" ";
  31.                 cout<<sum;
  32.             }
  33.             cout<<endl;
  34.         }
  35.     }
  36.     return 0;
  37. }
複製代碼

TOP

  1. #inclue<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<a2;i++)
  9.         for(int j=0;j<=b2;j++)
  10.             cin>>arr2[i][j];
  11.     if(b1!=a2)
  12.     {
  13.         cout<<"error"endl;
  14.     }else
  15.     {
  16.         for(int i=0;i<a1;i++)
  17.         {
  18.             for(int j=0;j<b2;j++)
  19.             {
  20.                 int sum=0;
  21.                 for(int k=0;k<b1;k++)
  22.                     sum+arr1[i][k]*arr2[k][j];
  23.                 if(j!=0)
  24.                     cout<<" ";
  25.                 cout<<sum;
  26.             }
  27.             cout<endl;
  28.         }
  29.     }
  30.     return 0;
  31. }
複製代碼

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"<<endl;
  18.     else
  19.     {
  20.         for(int i=0;i<a1;i++)
  21.         {
  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.     }
  34.     return 0;
  35. }
複製代碼

TOP

  1. t060. 610 矩陣乘積
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. int a1,b1,a2,b2;
  5. int main()
  6. {
  7. cin>>a1>>b1;
  8. int arr1[a1][b1];
  9. for(int i=0;i<a1;i++)
  10.   for(int j=0;j<b1;j++)
  11.     cin>>arr1[i][j];
  12. cin>>a2>>b2;
  13. int arr2[a2][b2];
  14. for(int i=0;i<a2;i++)
  15.   for(int j=0;j<b2;j++)
  16.     cin>>arr2[i][j];
  17. if(b1!=a2) cout<<"error";
  18. else
  19. {
  20.   for(int i=0;i<a1;i++)
  21.     {
  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) cout<<" ";
  28.           cout<<sum;
  29.          }
  30. cout<<endl;
  31.     }
  32. }
  33. return 0;
  34. }
複製代碼

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.     }
  20.     else
  21.     {
  22.         for(int i=0;i<a1;i++)
  23.         {
  24.             for(int j=0;j<b2;j++)
  25.             {
  26.                 int sum=0;
  27.                 for(int k=0;k<b1;k++)
  28.                    sum+=arr1[i][k]*arr2[k][j];
  29.                 if(j!=0)
  30.                    cout<<" ";
  31.                 cout<<sum;
  32.             }
  33.             cout<<endl;
  34.         }
  35.     }
  36.     return 0;
  37. }
複製代碼

TOP

返回列表