题目:
请你编程求出二维数组中某点的相邻数之和。相邻数是指与该点邻接的 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 。
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
Input
第一行输入 4个整数:h,l,c,r分别代表二维数组的行列值和指定点的行列下标。接下来输入 h行 l列的 int 型二维数组 a。其中 2≤h,l≤10;而 0≤c,r≤9;注意下标值从 0 开始。
Output
a[c][r] 的邻接元素之和。
Sample Input
4 5 2 3
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
Sample Output
54
Sample Input 2
4 5 1 0
1 2 3 4 5
6 7 8 9 10
3 4 5 7 8
2 5 6 8 0
Sample Output 2
17
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int h,l,c,r,sum;
scanf("%d %d %d %d",&h,&l,&c,&r);
int a[11][11]={00};//二维数组; 用两个for循环输入;
c=c+1;
r=r+1;
for(int i=1;i<=h;i++)
{
for(int j=1;j<=l;j++)
{
scanf("%d",&a[i][j]);
}
}
sum=a[c-1][r]+a[c][r-1]+a[c+1][r]+a[c][r+1]+a[c-1][r-1]+a[c+1][r+1]+a[c-1][r+1]+a[c+1][r-1];//周围一转全部加起来,万花丛中过,片叶都要粘身;
printf("%d",sum);
return 0;
}