题目描述:
现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。
如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道
这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。
输入格式
第一行一个正整数 NN。
接下来 N 行,每行三个整数,其中第 i 行表示第 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; }