对角线的和
描述
在一个N*M的二维数组中,求位置(x,y)上的数以及其所在的两条对角线的所有数的和。
输入描述
第一行两个正整数,N和M。其中 2<=M,N<=100。
以下N行,每行M个数,表示每个元素的值。
最后一行,两个正整数x,y,表示给出的元素的位置。
输出描述
一行,一个正整数,为(x,y)所在元素及其对角线上的所有数的和。
样例输入 1
3 3
3 5 8
7 2 6
8 8 9
2 2
样例输出 1
30
提示
N,M的取值范围是:2<=M,N<=100
结果在int范围内
对角线的和
描述
在一个N*M的二维数组中,求位置(x,y)上的数以及其所在的两条对角线的所有数的和。
输入描述
第一行两个正整数,N和M。其中 2<=M,N<=100。
以下N行,每行M个数,表示每个元素的值。
最后一行,两个正整数x,y,表示给出的元素的位置。
输出描述
一行,一个正整数,为(x,y)所在元素及其对角线上的所有数的和。
样例输入 1
3 3
3 5 8
7 2 6
8 8 9
2 2
样例输出 1
30
提示
N,M的取值范围是:2<=M,N<=100
结果在int范围内
晓君c++ 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
可以通过以下步骤来解决这个问题:
下面是该问题的C ++代码实现示例:
#include <iostream>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
int arr[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> arr[i][j];
}
}
int x, y;
cin >> x >> y;
int sum1 = 0, sum2 = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if (i + j == x + y || i - j == x - y) {
sum1 += arr[i][j];
}
if (i + j == x + y || j - i == x - y) {
sum2 += arr[i][j];
}
}
}
cout << arr[x][y] << " " << sum1 + sum2 << endl;
return 0;
}
这段代码首先读取输入的N和M,然后使用二维数组存储所有元素的值。接着,读取待查询的位置(x,y)。然后,使用两个循环遍历整个数组,判断每个元素的位置是否在两条对角线上,并将符合条件的元素值求和。最后,输出给定位置上的元素值以及两条对角线上的和。