已知有n个整数,并且要将这些数分成若干个三个数一组的周期,如果不足一个周期,就在最后补上0。对于每个周期中第一个数的权值和等于a1 a[1 3] … …,求这三个数中权值最大的数的权值。如果最大权值在第一个数,输出’J’;如果最大权值在第二个数,输出’H’;如果最大权值在第三个数,输出’B’。
可以使用如下的代码来解决这个问题:
int n =// 输入n
int a[n]; // 输入a[i]
int max_val = 0; // 记录最大权值
char ans = ' '; // 记录答案
for (int i = 0; i < n; i += 3) {
// 对于每一个周期,求出最大权值
int val = max(a[i], max(a[i+1], a[i+2]));
// 如果当前周期最大权值更大,更新答案
if (val > max_val) {
max_val = val;
// 判断最大权值在哪个数
if (val == a[i]) ans = 'J';
else if (val == a[i+1]) ans = 'H';
else ans = 'B';
}
}
cout << ans << endl; // 输出答案
在上述代码中,我们首先使用一个for循环来遍历每一个周期。对于每一个周期,我们使用C++中的max函数来求出三个数中的最大值,然后将这个最大值与当前最大权值进