题目地址:
https://www.acwing.com/problem/content/749/
输入一个二维数组
M
[
12
]
[
12
]
M[12][12]
M[12][12],根据输入的要求,求出二维数组的左上半部分元素的平均值或元素的和。左上半部分是指次对角线上方的部分,如下图所示,黄色部分为对角线,绿色部分为左上半部分:
输入格式:
第一行输入一个大写字母,若为S
,则表示需要求出左上半部分的元素的和,若为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() {
cin >> op;
double sum = 0.0;
for (int i = 0; i < 12; i++)
for (int j = 0; j < 12; j++) {
cin >> a[j];
if (j < 11 - i) sum += a[j];
}
if (op == 'S') printf("%.1lf\n", sum);
else printf("%.1lf\n", sum / (12 * 12 - 12) * 2);
return 0;
}
时空复杂度 O ( 1 ) O(1) O(1)。