WAY 1
将其转化为 ----- AcWing 749. 数组的上方区域
#include <iostream>
using namespace std;
int main()
{
double a[12][12];
char t;
cin >> t;
for (int i = 0; i < 12; i ++ )
for (int j = 0; j < 12; j ++ )
cin >> a[i][j];
double s = 0, c = 0;
for (int j = 0; j < 5; j ++ ) // 先循环j
for (int i = j + 1; i <= 10 - j; i ++ )
{
s += a[i][j];
c += 1;
}
if (c == 'M') printf ("%.1lf", s / c);
else printf ("%.1f", s);
return 0;
}
WAY 2
分为上下两半
#include <iostream>
using namespace std;
int main()
{
double a[12][12];
char t;
cin >> t;
for (int i = 0; i < 12; i ++ )
for (int j = 0; j < 12; j ++ )
cin >> a[i][j];
double s = 0, c = 0;
for (int i = 1; i <= 5; i ++ )
for(int j = 0; j <= i - 1; j ++)
{
c += 1;
s += a[i][j];
}
for (int i = 6; i <= 10; i ++ )
for (int j = 0; j <= 10 - i; j ++ )
{
c += 1;
s += a[i][j];
}
if (c == 'M') printf ("%.1lf", s / c);
else printf ("%.1f", s);
return 0;
}
WAY 3
用函数表示一下
#include <iostream>
using namespace std;
int main()
{
double a[12][12];
char t;
cin >> t;
for (int i = 0; i < 12; i ++ )
for (int j = 0; j < 12; j ++ )
cin >> a[i][j];
double s = 0, c = 0;
for (int i = 0; i < 12; i ++ )
for (int j = 0; j < 12; j ++ )
if (i - j > 0 && 11 - j - i > 0) // y = i ; x = j
{
c += 1;
s += a[i][j];
}
if (c == 'M') printf ("%.1lf", s / c);
else printf ("%.1f", s);
return 0;
}