题目链接:https://acm.ecnu.edu.cn/contest/103/problem/A/
题目就是让求卷积,至于什么是卷积:传送门,这道题就是简单的求一个卷积,给一个矩阵A,再给一个矩阵B,然后矩阵A和矩阵B对应元素相乘后将所有结果相加,就能求得一个数,以此类推输出所有的求得的数(题目上给的例图很形象)。我的代码可能过于暴力...
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,p,q;
int pre[105][105],a[105][105],b[105][105];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
scanf("%d%d",&p,&q);
for(int i=1;i<=p;i++){
for(int j=1;j<=q;j++){
scanf("%d",&b[i][j]);
}
}
for(int i=1;i<=n-p+1;i++){
for(int j=1;j<=m-q+1;j++){
int ans = 0;
int num1 = 1,num2 = 1;
for(int k=i;k<=i+p;k++){
for(int l=j;l<=j+q;l++){
ans += (a[k][l] * b[num1][num2++]);
}
num1++;
num2 = 1;
}
printf("%d%c",ans,j==m-q+1?'\n':' ');
}
}
return 0;
}