题目
分析
代码
1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <algorithm>
5 #define ll long long
6 using namespace std;
7 int f[300][300],ans[300][300],sum[300][300];
8 int main()
9 {
10 freopen("map.in","r",stdin);
11 freopen("map.out","w",stdout);
12 int n,r;
13 scanf("%d%d",&n,&r);
14 for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) scanf("%d",&f[i][j]);
15 for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+f[i][j];
16 for (int i=1;i<=n;i++)
17 for (int j=1;j<=n;j++)
18 {
19 int ka=max(1,i-r),kka=min(n,i+r);
20 int kb=max(1,j-r),kkb=min(n,j+r);
21 ans[i][j]=sum[kka][kkb]-sum[ka-1][kkb]-sum[kka][kb-1]+sum[ka-1][kb-1];
22 }
23 for (int i=1;i<=n;i++)
24 {
25 for (int j=1;j<=n;j++)
26 printf("%d ",ans[i][j]);
27 cout<<endl;
28 }
29
30 return 0;
31 }