题目
分析
这题也没有啥好说的。核心代码是双重循环,并注意两个循环的起点和终点不能有任何重叠——否则会出现自己和自己相比的情况。自己和自己相比,肯定满足所有“旗鼓相当”的判定,因此计数一定出错。
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
// 总分差不超过10,且各科差都不超过5
int total_i =
scores[i].chinese + scores[i].math + scores[i].english;
int total_j =
scores[j].chinese + scores[j].math + scores[j].english;
if (abs(total_i - total_j) <= 10 &&
abs(scores[i].chinese - scores[j].chinese) <= 5 &&
abs(scores[i].math - scores[j].math) <= 5 &&
abs(scores[i].english - scores[j].english) <= 5)
{
count++;
}
}
}
注意上述代码中,i和j是不会有重叠的,也就避免了自己和自己相比的错误。
答案

思考
(略)
