题目地址:
https://www.acwing.com/problem/content/747/
输入一个二维数组
M
[
12
]
[
12
]
M[12][12]
M[12][12],根据输入的要求,求出二维数组的右上半部分元素的平均值或元素的和。右上半部分是指主对角线上方的部分,如下图所示,黄色部分为对角线,绿色部分为右上半部分:
输入格式:
第一行输入一个大写字母,若为
S
S
S,则表示需要求出右上半部分的元素的和,若为
M
M
M,则表示需要求出右上半部分的元素的平均值。接下来
12
12
12行,每行包含
12
12
12个用空格隔开的浮点数,表示这个二维数组,其中第
i
+
1
i+1
i+1行的第
j
+
1
j+1
j+1个数表示数组元素
M
[
i
]
[
j
]
M[i][j]
M[i][j]。
输出格式:
输出一个数,表示所求的平均数或元素的和的值,保留一位小数。
数据范围:
−
100.0
≤
M
[
i
]
[
j
]
≤
100.0
−100.0≤M[i][j]≤100.0
−100.0≤M[i][j]≤100.0
代码如下:
#include <iostream>
using namespace std;
double a[12];
char op;
int main() {
double sum = 0.0;
cin >> op;
for (int i = 0; i < 12; i++)
for (int j = 0; j < 12; j++) {
double x;
cin >> x;
if (j > i) sum += x;
}
printf("%.1lf\n", op == 'S' ? sum : sum / (12 * 12 - 12) * 2);
return 0;
}
时空复杂度 O ( 1 ) O(1) O(1)。