问题标题: 1172 打字游戏(game) 怎么做?

0
0

0
已采纳
朱宗晔
朱宗晔
初级光能
初级光能

核心部分 

cin >> n;
	for(int i = 1;i <= n;i ++){
		cin >> a[i].xm;
		cin >> a[i].fen;
	}
	sort(a + 1, a + 1 + n,cmp);
	for(int i = 1;i <= n;i ++){
		cout << a[i].xm << endl;
	}

注意

struct fs{
	string fen;
	string xm;
}a[505];
int cmp(const fs& a,const fs& b){
	if(a.fen.size() != b.fen.size()) return a.fen.size() > b.fen.size();
	else if(a.fen != b.fen) return a.fen > b.fen;
	else return a.xm < b.xm;
}

 

朱宗晔在2018-01-23 16:38:01追加了内容

数字太大,用字符串保存。

步骤:

1、用结构体里的字符串1和字符串2保存姓名和分数

2、多关键字排序,注意:

① 先比较长度,如果长度不同则

return a.fen.size() > b.fen.size();

② 如果长度相等,则比较他俩是不是一样,如果不一样则

return a.fen > b.fen;

③ 如果依然相等则

return a.xm < b.xm;

 

0
0
谢其桦
谢其桦
资深守护
资深守护

 

{

 

sort(a + 1, a + 1 + n,cmp);

 

for(int i = 1;i <= n;i ++){

 

cout << a[i].xm << endl;

 

}

0
我要回答