ALGO_86(蓝桥杯) 矩阵乘法

问题描述

  输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。

输入格式

  第一行,空格隔开的三个正整数m,s,n(均不超过200)。

  接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。

  接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。

输出格式

  m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。

样例输入

2 3 2

1 0 -1

1 1 -3

0 3

1 2

3 1

样例输出

-3 2

-8 2

提示

矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。

例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3

#include<iostream>
#include<cstdio>
using namespace std;
#define N 205
//#define LOCAL

int a[N][N], b[N][N], c[N][N];

int main() {
#ifdef LOCAL
    freopen("algo_86.txt", "r", stdin);
#endif
    int m, s, n, sum = 0;
    cin >> m >> s >> n;
    //读取
    for(int i = 0; i < m; i++)
        for(int j = 0; j < s; j++) {
            scanf("%d", &a[i][j]);
        }
    for(int i = 0; i < s; i++)
        for(int j = 0; j < n; j++) {
            scanf("%d", &b[i][j]);
        }
    //计算
    for(int i = 0; i < m; i++)
        for(int j = 0; j < n; j++) {
            for(int k = 0; k < s; k++) {
                sum += (a[i][k] * b[k][j]);
            }
            c[i][j] = sum;
            sum = 0;
        }
    //输出
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < n; j++) {
            if(j == 0) cout << c[i][j];
            else cout << " " << c[i][j];
        }
        cout << endl;
    }
     return 0;
}

原文地址:https://www.cnblogs.com/bearcarl/p/8520013.html

时间: 2024-10-24 14:28:05

ALGO_86(蓝桥杯) 矩阵乘法的相关文章

蓝桥杯 矩阵翻硬币

思路: 参考了http://blog.csdn.net/snailset/article/details/26752435,思路很清晰. 用java实现了高效的牛顿迭代法. 我tm都要爱上java了. 实现: 1 import java.math.*; 2 import java.util.*; 3 4 public class Main { 5 6 public static BigInteger sqrt(BigInteger x){ 7 if (x .equals(BigInteger.Z

蓝桥杯基础练习---矩阵乘法

基础练习 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 锦囊1 锦囊2 锦囊3 问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵.相邻的数之间用一个空格隔开 样例

蓝桥杯 BASIC_17 矩阵乘法 (矩阵快速幂)

问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵.相邻的数之间用一个空格隔开 样例输入 2 2 1 2 3 4 样例输出 7 10 15 22 这道题题目很简单,而且数据量也很

蓝桥杯- 算法训练 矩阵乘法

算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j). 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j). 输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值. 样例输入 2 3 21 0 -11 1 -30 31 23 1 样例输出 -3 2-8

2015 蓝桥杯:6.加法变乘法

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

蓝桥杯-加法变乘法(java)

蓝桥杯第六届省赛题目-加法变乘法(java) 题目: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015 就是符合要求的答案. 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10). 注意:需要你提交的是一个整数,不要填写任何多余的内容. 我的思路:如案例:1+2+3+...+10*11+12

蓝桥网试题 java 基础练习 矩阵乘法

------------------------------------------------------------ 第一次感觉到好好学习的重要性QAQ 在做这道题之前请先学会 :矩阵乘法(百度百科) 矩阵的0次幂:对角线为1 其他值为0 例如 结果 ------------------------------------------------------------ 算法 1 import java.util.*; 2 public class Main { 3 public stati

蓝桥基础练习 矩阵乘法 BASIC-17(矩阵快速幂)

问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵.相邻的数之间用一个空格隔开 样例输入 2 21 23 4 样例输出 7 1015 22 解:矩阵乘法满足结合律,所以也可以用快

第六届蓝桥杯2015-省赛-C语言大学B组 个人题解

题目连接:http://course.baidu.com/view/2d86a6c1960590c69fc37622.html 1,奖券数目52488 #include <iostream> using namespace std; bool isOK(int a) { while(a) { if(a%10==4) return false; a /= 10; } return true; } int main() { int ans = 0; for(int i=10000; i<=9