资深守护
3992 电脑**能排序
经验值:0 时间限制:1000毫秒
题目描述 Description
电脑的**能由很多方面决定:例如cpu、gpu、内存、硬盘等等,我们可以通过跑分软件,来对电脑的各个方面进行评测。
现在有n(n<=105)台电脑,每个电脑的各个方面的**能用一个整数表示(分数不超过106)。请你根据每个电脑的分数,这些电脑的**能进行排名:先按照cpu分数降序排名,若cpu分数相同则按照gpu进行降序排名,若gpu分数相同则按照内存的分数降序排列,否则按照硬盘的分数进行升序排名。
输入描述 Input Description
第一行输入一个整数n(n<=10^5)
接下来n行,每行输入4个整数分别表示这台电脑cpu、gpu、内存、硬盘的跑分,空格隔开,
电脑编号按照输入顺序为1~n
输出描述 Output Description
输出n行,每行一个整数,表示排序后的电脑编号
样例输入 Sample Input
4 123450 54321 10000 5000 110000 54321 8000 5000 123450 54321 9000 5000 153450 54321 5000 5000
样例输出 Sample Output
4 1 3 2
求排序部分代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<iomanip>
#include<sstream>
using namespace std;
struct xinnen{
int cpu,gpu,neicun,yinpan;
}a[10005];
bool cmp(xinnen x,xinnen y) {
}
int b[10005];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].cpu>>a[i].gpu>>a[i].neicun>>a[i].yinpan;
b[i]=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<b[i]<<endl;
}
return 0;
}
急急急!
中级守护
bool cmp(computer a,computer b){
if(a.cpu!=b.cpu){
return a.cpu>b.cpu;
}else if(a.gpu!=b.gpu){
return a.gpu>b.gpu;
}else if(a.ram!=b.ram){
return a.ram>b.ram;
}
return a.hdd<b.hdd;
}
cmp函数
资深守护
//头文件
using namespace std;
定义结构体函数 stu{
int cpu,gpu,nei,ying; //分别定义CPU,GPU,内存,硬盘数据
int n; //n用来存储编号
};
布尔 cmp(stu a,stu b){ //结构体排序,学过就应该都知道
如果(a.cpu!=b.cpu){
返回 a.cpu>b.cpu;
}否则如果(a.gpu!=b.gpu){
返回 a.gpu>b.gpu;
}否则如果(a.nei!=b.nei){
返回 a.nei>b.nei;
}否则{
返回 a.ying<b.ying;
}
}
int n; //这个定义就不用多说了
stu a[10005];
int main(){
输入>>n;
循环从1到n{
输入>>a[i].cpu>>a[i].gpu>>a[i].nei>>a[i].ying; //输入所有电脑数据
a[i].n=i; //记录编号
}
sort(a+1,a+n+1,cmp); //sort排序
循环从1到n{
输出<<a[i].n<<"\n"; //输出刚刚记录的编号,注意是换行符
}
结束
}
望采纳谢谢