这题感觉遍历就好了,如果学生是n<100000有无好方法
查看原帖
这题感觉遍历就好了,如果学生是n<100000有无好方法
268811
画船听雨楼主2022/1/20 21:40
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;

struct MyStruct
{
	int chi, math, eng, sum;
	string name;
};

int main() {
	int n, i, temp, j;
	MyStruct stu;
	vector<MyStruct> a;
	cin >> n;
	for (i = 0; i < n; i++) {
		cin >> stu.name >> stu.chi >> stu.math >> stu.eng;
		stu.sum = stu.chi + stu.math + stu.eng;
		a.push_back(stu);
	}
	for (i = 0; i < n-1; i++) 
		for (j = i + 1; j < n; j++) {
			if(abs(a[i].chi-a[j].chi)<=5)
				if (abs(a[i].math - a[j].math) <= 5)
					if (abs(a[i].eng - a[j].eng) <= 5)
						if (abs(a[i].sum - a[j].sum) <= 10) {
							cout << a[i].name << " " << a[j].name << endl;
						}
		}
	return 0;
}
2022/1/20 21:40
加载中...