Fatebinder 2020-12-06 14:22 采纳率: 0%
浏览 2

pat1080b(乙级),cmp函数不同写法排序问题

struct mooc{ 
	string name;
	int ol, mid, final, total;	
};
bool cmp(mooc x,mooc y){
	return x.total != y.total ? x.total > y.total : x.name < y.name;

/*if (x.total != y.total) return x.final > y.total;
	else  return  x.name < y.name;*//这么写测试点3错误
}
//排序场景
vector<mooc> v
sort(v.begin(),v.end(),cmp);

搞不明白为什么测试点3的大数目排序注释里的写法就错了.

 

全代码

#include<iostream>
#include<vector>
#include<algorithm>
#include<map> 
using namespace std;
struct mooc{ 
	string name;
	int ol, mid, final, total;	
};
bool cmp(mooc x,mooc y){
	return x.total != y.total ? x.total > y.total : x.name < y.name;
/*if ( x.total != y.total) return x.final > y.total;
	else  return  x.name < y.name;//字典序是<*///这么写测试点3错误,可能是大量数据的不稳定排序错误
}
map<string, int> order;//记录学生对应的合法插入序号 
int main(){
	int p, m, n, temp, cnt = 1;
	string s;
	cin >> p >> m >> n;
	vector<mooc> v,ans;
	for(int i = 0; i < p; i++){
		cin >> s >> temp;
		if (temp >= 200){
			v.push_back(mooc{s, temp, -1, -1, 0});//有输入了先把其他-1占了 
			order[s] = cnt++;//说明有合法插入,记下顺序 
		}
	}
	for(int i = 0; i < m; i++){
		cin >> s >> temp;
		if (order[s] != 0)//如果!=0说明有合法ol成绩,没有就跳过 
			v[order[s] - 1].mid = temp;//有合法成绩,那么记录的序号-1就是在vector里的下标 
	}
	for(int i=0;i<n;i++){
		cin >> s >> temp;
		if (order[s] != 0){//如果!=0说明有合法ol成绩,没有就跳过 
			v[order[s] - 1].total = v[order[s] - 1].final = temp;//有合法成绩,那么记录的序号-1就是在vector里的下标
			if(v[order[s] - 1].mid > temp)//期中和期末比较,放在后面就是默认了一种情况,少写else	 
				v[order[s] - 1].total = int( v[order[s] - 1].mid * 0.4 + v[order[s] - 1].final * 0.6 + 0.5);
				//+0.5实现四舍五入,不加只保留整数 
		}	 
	}
	sort(v.begin(),v.end(),cmp);
	for(int i=0;i<v.size();i++)
		if (v[i].total >= 60)
			printf("%s %d %d %d %d\n",v[i].name.c_str(),v[i].ol,v[i].mid,v[i].final,v[i].total);
	return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 17:59
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥30 关于#微信#的问题:微信实名不绑卡 可以实现吗 有没有专家 可以解决
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题