题目描述:现有 n名同学参加了期末考试,并且已知每名同学的九门科目成绩(0到150的一个整数)。如果有两位同学的每科成绩的分差都不超过 5分,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的对手”?。一个同学可能同时与多人成为旗鼓相当的对手。 输入格式:第一行输入同学人数n。 接下来的n行,每行九个整数,空格隔开,表示了其中一名同学的九门科目成绩。 输出格式:一个整数,表示“旗鼓相当的对手”的对数。c++实现
时间: 2024-02-13 11:05:10 浏览: 59
以下是C++实现代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<vector<int>> scores(n, vector<int>(9));
for (int i = 0; i < n; i++) {
for (int j = 0; j < 9; j++) {
cin >> scores[i][j];
}
}
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
bool flag = true;
for (int k = 0; k < 9; k++) {
if (abs(scores[i][k] - scores[j][k]) > 5) {
flag = false;
break;
}
}
if (flag) cnt++;
}
}
cout << cnt << endl;
return 0;
}
```
解释:
1. 首先,我们通过 `cin` 输入同学的数量 `n`。
2. 然后,我们创建一个二维向量 `scores`,用于存储每个同学的九门科目成绩。
`vector<vector<int>> scores(n, vector<int>(9))` 表示创建一个大小为 `n*9` 的二维向量。
3. 接下来,我们使用两重循环遍历所有同学的组合。
外层循环变量为 `i`,内层循环变量为 `j`,并且要求 `j > i`,这样就可以避免重复计算。
4. 在循环中,我们使用一个变量 `flag` 来记录两位同学是否是旗鼓相当的对手。
如果两位同学在某一门科目上的分差超过 5 分,则 `flag` 置为 false,表示两位同学不是旗鼓相当的对手。
5. 最后,我们将所有旗鼓相当的对手数量累加到变量 `cnt` 中,并将 `cnt` 输出到控制台上。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)