一个问题
查看原帖
一个问题
1032607
nnbnwd楼主2025/6/28 11:49
#include<iostream>
#include<algorithm>
using namespace std;
struct tsco{
	int odr;
	int cns;
	int mth;
	int ish;
	int total;
}stu[100001];
int add_subject_score(tsco s[],int a){
	for(int i=0;i<a;i++){
		s[i].odr=i+1;
		s[i].total=s[i].cns+s[i].mth+s[i].ish;
	}
}
bool cmp(tsco b,tsco c){
	if(b.total>c.total) return 1;
	else if(b.total<c.total) return 0;
	else{
		if(b.cns>c.cns) return 1;
		else if(b.cns<c.cns) return 0;
		else{
			if(b.odr<c.odr) return 1;
			else{
				return 0;
			}
		}
	} 
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>stu[i].cns>>stu[i].mth>>stu[i].ish;
	}
	add_subject_score(stu,n);
    sort(stu,stu+n,cmp);
	for(int i=0;i<5;i++){
		cout<<stu[i].odr<<" "<<stu[i].total<<endl;
	}
	return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
struct tsco{
	int odr;
	int cns;
	int mth;
	int ish;
	int total;
}stu[100001];
//int add_subject_score(tsco s[],int a){
//	for(int i=0;i<a;i++){
//		s[i].odr=i+1;
//		s[i].total=s[i].cns+s[i].mth+s[i].ish;
//	}
//}
bool cmp(tsco b,tsco c){
	if(b.total>c.total) return 1;
	else if(b.total<c.total) return 0;
	else{
		if(b.cns>c.cns) return 1;
		else if(b.cns<c.cns) return 0;
		else{
			if(b.odr<c.odr) return 1;
			else{
				return 0;
			}
		}
	} 
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>stu[i].cns>>stu[i].mth>>stu[i].ish;
	}
	for(int i=0;i<n;i++){
		stu[i].odr=i+1;
		stu[i].total=stu[i].cns+stu[i].mth+stu[i].ish;
	}
//	add_subject_score(stu,n);
    sort(stu,stu+n,cmp);
	for(int i=0;i<5;i++){
		cout<<stu[i].odr<<" "<<stu[i].total<<endl;
	}
	return 0;
}

这两篇代码一个把计算总分和保存学号做成了函数; 一个直接应用不做函数,为什么做成函数的会全部RE直接应用的不会。(两篇代码在DEV-C++上的效果相同,都能正常输出,都是正确答案。)

2025/6/28 11:49
加载中...