文章

7

粉丝

211

获赞

10

访问

37.0k

头像
题目都读不明白,原来就是sort,为了简化代码,封装了一下
P1310 浙江大学机试题
发布于2022年3月7日 22:34
阅读数 5.1k

#include<iostream>
#include<algorithm>
using namespace std;

typedef struct {
	int num; // 编号
	double data[4]; // 金牌 奖牌 金牌人口比例 奖牌人口比例
	int people; // 人口
	int rank[4]; // 排名
} Country;

// 按金牌排名
bool cmp1(Country a, Country b) {
	return a.data[0] > b.data[0];
}
// 按奖牌排名
bool cmp2(Country a, Country b) {
	return a.data[1] > b.data[1];
}
// 按金牌人口比例排名
bool cmp3(Country a, Country b) {
	return a.data[2] > b.data[2];
}
// 按奖牌人口比例排名
bool cmp4(Country a, Country b) {
	return a.data[3] > b.data[3];
}

// 计算排名  m国家数 factor排名方式
void countRank(Country *q,int m,int factor) {
	int i = 1;
	q[0].rank[factor] = 1;
	for (; i < m; i++) {
		if (q[i].data[factor] == q[i - 1].data[factor]) // 数据相同,排名并列
			q[i].rank[factor] = q[i - 1].rank[factor];
		else  q[i].rank[factor] = i+1; // 排名并列但占位 如1 2 2 4
	}
}

void countFinal(int rank[]) {
	int i = 3,j=3;
	int r = rank[3]; // 标志为最小
	for (; i >= 0; i--) { // 往前找更小的
		if (rank[i] <= r...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发