洛谷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;
}
posted @ 2024-07-10 00:48  Tomorrowland_D  阅读(208)  评论(0)    收藏  举报