09:矩阵乘法

总时间限定: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
总结几个矩阵的乘法。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。

输出
输出矩阵C,一共n行,每行k个整数,整数之间以1个空格分开。

样例输入
3 2 3
1 1
1 1
1 1
1 1 1
1 1 1

样例输出
2 2 2
2 2 2
2 2 2

#include<iostream>
using namespace std;
int a[1001][1001];
int b[1001][1001];
int c[1001][1001];
int now=1;//记录i的值 
int tot;//记录m-1 
int main()
{
    int n,k,m;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>a[i][j];
        }
    }
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=k;j++)
        {
            cin>>b[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            while(now<=m) 
            {
                c[i][j]=a[i][now]*b[now][j]+c[i][j];
                now++;
            }
            now=1;
        }

    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            cout<<c[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

 

10:矩阵转置

总时间限定: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
输入1个n行m列的矩阵A,输出它的转置AT

输入
率先行李包裹涵多个整数n和m,表示矩阵A的行数和列数。1 <= n <= 100,1
<= m <= 100。
接下去n行,每行m个整数,表示矩阵A的成分。相邻多个整数之间用单个空格隔离,每种成分均在1~1000之间。

输出
m行,每行n个整数,为矩阵A的转置。相邻八个整数之间用单个空格隔离。

样例输入
3 3
1 2 3
4 5 6
7 8 9

样例输出
1 4 7
2 5 8
3 6 9

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5 int a[10001][10001];
 6 int main()
 7 {
 8     int n,m;
 9     cin>>n>>m;
10     for(int i=1;i<=n;i++)
11     {
12         for(int j=1;j<=m;j++)
13         {
14             cin>>a[i][j];
15         }
16     }
17     int j=1;
18     if(n==1)
19     {
20         for(int i=1;i<=n;i++)
21         {
22             for(int j=1;j<=m;j++)
23             {
24                 cout<<a[i][j];
25                 cout<<endl;
26             }
27         }
28         return 0;
29     }
30     
31     for(int i=1;i<=n;i++)
32     {
33         
34         while(j<=m)
35         {
36             cout<<a[i][j]<<" ";
37             i++;
38             if(i==n)
39             {
40                 cout<<a[i][j]<<" ";
41                 cout<<endl;
42                 j++;
43                 i=1;
44             }
45             
46         }    
47         
48     }
49     return 0;
50 }