P5728 【深基5.例5】旗鼓相当的对手

题目描述:

现有 N(N1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。

如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道

这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。

输入格式

第一行一个正整数 NN。

接下来 N 行,每行三个整数,其中第 i 行表示第 名同学的语文、数学、英语成绩。最先读入的同学编号为 1。

输出格式

输出一个个整数,表示“旗鼓相当的对手”的对数。

输入输出样例

输入 #1
3
90 90 90
85 95 90
80 100 91
输出 #1
2
 

注意思想!

#include<stdio.h>
#include<math.h>
int main()
{
    int a[1010][5] ={  // 为什么1010不写会出现错误?c和c++一定要写,不能省略。 比所给的数大10或100
    {0,0,0}
    };

    int n;
    int sum[1010]; //定义一个求和数组,存放个人的成绩总和
    int i,j;
    int cnt = 0;  //表示数组下标

    scanf("%d",&n);

    for( i=0; i<n; i++)//输入你要输入的数据,由n决定输入几轮
    {
        scanf("%d %d %d",&a[i][1],&a[i][2],&a[i][3]);
        sum[i] = a[i][1]+a[i][2]+a[i][3];
    }

    for( i=0; i<n; i++)
    {
        for( j=i+1; j<n; j++)
        {
            if(    //注意j是从i的下一个开始,所以刚好j=1+1,因为不能与自己比较,所以加一个
                abs( a[i][1]-a[j][1]) <= 5 &&
                abs( a[i][2]-a[j][2]) <= 5 &&
                abs( a[i][3]-a[j][3]) <= 5 &&
                abs( sum[i]-sum[j] ) <=10
               )

            cnt++;    //有符合的则用计数器加一!
        }
    }
    printf("%d",cnt);//最后输出cnt的值即可


    return 0;
}
原文地址:https://www.cnblogs.com/18191xq/p/12628279.html