Dotcpp  >  编程题库  >  释放魔法
题目 2104:

释放魔法

时间限制: 4s 内存限制: 320MB 提交: 53 解决: 26

题目描述

杰洛特与一种猎魔人在前方抵抗狂猎大军,现在,该女巫发挥自己的用处了,两位树桩菇娘分别在城楼上发动了魔法,但释放魔法需要瞄准,而你也只知道一个大概,因此,需要你利用卷积的知识运算来辅助瞄准。
    分别给定一个自定义大小的原始矩阵和一个3*3卷积核矩阵(不需要翻转,直接原样求),你所做的就是通过这两个矩阵求出卷积后的输出矩阵。

    PS:请使用0来补全原矩阵,(防止python引用框架答题答题)不要使用边缘拷贝的方式

如果你不知道怎么求卷积,这里有一个举例:
    给定一个3*3的原始矩阵h
    h = [ 1 , 2 , 3]
        [ 1 , 1 , 1]
        [ 0 , 1 , 2]
    给定一个3*3的卷积核v
    v = [ 1 , 0 , 1]
        [ 2 , 1 , 1]
        [ 0 , 0 , 0]
    那么卷积运算 h * v = ans ,ans为卷积运算的输出矩阵
    对于每一个ans而言有 ans [i,j] = sum( v[a,b]*h[i-a,j-b] )
    ans的第一行第一列的结果为: 0*1 + 0*0 + 0*1 + 0*2 + 1*1 + 2*1 + 0*0 + 1*0 + 2*0 = 3
    ……
    ans的第二行第二列的结果为: 1*1 + 2*0 + 3*1 + 1*2 + 1*1 + 1*1 + 0*0 + 1*0 + 2*0 = 8
    ……
    因此,卷积后的输出矩阵为:
    ans=[3 , 7 , 7] 
        [4 , 8 , 5]
        [2 , 5 , 5] 

输入格式

 输入一个n和m分别表示原始矩阵的大小
    接下来n行每行m个整型数据表示矩阵的内容
    再接下来3行3列分别表述卷积核的矩阵内容
    
    3 <= n,m <= 1000
    其余所有输入内容均 小于 10000 且为整数

输出格式

 共n行m列表示卷积后的输出矩阵

样例输入

4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1 2 1
0 0 0
-1 -2 -1

样例输出

-16 -24 -28 -23
-24 -32 -32 -24
-24 -32 -32 -24
28 40 44 35

提示

零基础的同学可以先学习基础,教程见:  C语言教程C++教程编译器教程数据结构教程Python教程单片机教程

视频教学见视频网课

标签