洛谷:P5728:旗鼓相当的对手


洛谷:P5728:旗鼓相当的对手

Table of Contents

题目

P5728:旗鼓相当的对手

分析

这题也没有啥好说的。核心代码是双重循环,并注意两个循环的起点和终点不能有任何重叠——否则会出现自己和自己相比的情况。自己和自己相比,肯定满足所有“旗鼓相当”的判定,因此计数一定出错。

    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++;
            }
        }
    }

注意上述代码中,ij是不会有重叠的,也就避免了自己和自己相比的错误。

答案

Solution

思考

(略)

Previous Next