洛谷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 @   Tomorrowland_D  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示