2893: 【例62.2】 相邻数之和
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:2
题目描述
请你编程求出二维数组中某点的相邻数之和。相邻数是指与该点邻接的 $8$ 个元素,若该点在边角位置,则邻接元素相应减少。
下图以 $4$ 行 $5$ 列二维数组 $a$ 为例:$a[2][3]$ 元素的值为 $7$,其邻接元素为 $8,9,10,5,8,6,8,0$ 和为 $54$ 。再比如:$a[1][0]$ 元素的值为 $6$,则其邻接元素为 $1,2,7,3,4$和为 $17$。
下图以 $4$ 行 $5$ 列二维数组 $a$ 为例:$a[2][3]$ 元素的值为 $7$,其邻接元素为 $8,9,10,5,8,6,8,0$ 和为 $54$ 。再比如:$a[1][0]$ 元素的值为 $6$,则其邻接元素为 $1,2,7,3,4$和为 $17$。
1 2 3 4 5 6 7 8 9 10 3 4 5 7 8 2 5 6 8 0
输入
第一行输入 $4$ 个整数:$h$,$l$,$c$,$r$ 分别代表二维数组的行列值和指定点的行列下标。
接下来输入 $h$ 行 $l$ 列的 int 型二维数组 $a$。其中 $2≤h,l≤10$;而 $0≤c,r≤9$;注意下标值从 $0$ 开始。
接下来输入 $h$ 行 $l$ 列的 int 型二维数组 $a$。其中 $2≤h,l≤10$;而 $0≤c,r≤9$;注意下标值从 $0$ 开始。
输出
$a[c][r]$ 的邻接元素之和。
样例输入 复制
4 5 2 3
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
样例输出 复制
54
提示
#include<bits/stdc++.h> using namespace std; long long a[15][15],h,l,c,r,sum, dx[8]={-1,-1,-1,0,1,1,1,0}, dy[8]={-1,0,1,1,1,0,-1,-1}; bool check(int x,int y){ return x>=0&&x<h&&y>=0&&y<l; } int main(){ cin>>h>>l>>c>>r; for(int i=0;i<h;i++) for(int j=0;j<l;j++) cin>>a[i][j]; for(int i=0;i<8;i++){ int nx=c+dx[i],ny=r+dy[i]; if(check(nx,ny)) sum+=a[nx][ny]; } cout<<sum; return 0; }