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

这道题其实我们有非常直接的思路,直接用二维数组存储每个人的语文,数学,英语成绩。
用一个一维数组来存储每个人的总分成绩。
然后再依次遍历这个二维数组(两层循环),判断某一个人的成绩和谁旗鼓相当,并使用count变量存储这个值。
还有一点:题目中描述:第一个输入数据的人的编号记为1,故而我们下标从1开始计数
具体代码如下:
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define MAX_N 1001
int main()
{
//输入N的值
int N;
cin >> N;
//定义二维数组,存储每个人的语文,英语,数学的成绩
int score[MAX_N][4];
//定义一维数组Sum,存放每个人的总分
int Sum[MAX_N] = { 0 };
memset(score, 0, sizeof(score));
int count = 0;
//输入数据
//根据题意,最先读入的人的编号是1,故而我们从下标为1开始计数。
for (int i = 1; i <= N; i++) {
cin >> score[i][1] >> score[i][2] >> score[i][3];
Sum[i] = score[i][1] + score[i][2] + score[i][3];
}
//判断条件,并计算count
for (int i = 1; i <= N; i++) {
for (int j = i + 1; j <= N; j++) {
if (abs(score[i][1] - score[j][1]) <= 5 &&
abs(score[i][2] - score[j][2]) <= 5 &&
abs(score[i][3] - score[j][3]) <= 5 &&
abs(Sum[i] - Sum[j]) <= 10) count++;
}
}
//输出结果
cout << count;
return 0;
}
浙公网安备 33010602011771号