您的位置:首页 > 其它

类别sort使用排序

2015-07-18 15:09 169 查看

2129: 船上的第二次测试第三个问题

Time Limit: 5 Sec Memory Limit: 128 MB

Submit: 243 Solved: 74

[Submit][Status][Web
Board]

Description

给一个数组,数组每一个元素都是字符串。使用插入排序,将此数组元素排序,排序规则是以字符串的ASCII码值之和作大小比較。要求定义一个类(MyString),数组每一个元素都是MyString对象。重载关系运算符(<号 或>号)用于比較两个MyString的大小。

Input

第一行表示有多少个測试样例 后面每一个測试样例都有两行,一行表示单词个数,还有一行仅仅含英文单词与空格

Output

输出单词排序后的情况

Sample Input

2

5

windy snowy sunny rainy foggy

6

cherry banana orange litchi pomelo durian

Sample Output

foggy rainy windy sunny snowy

banana orange litchi durian pomelo cherry

#include<iostream>
#include<cstring>
#include<iomanip>
#include<algorithm>
using namespace std;
#define pi 3.14159
class mystring
{
char a[50];
int sum;
public:
void setmystring(char *b)
{
sum=0;
strcpy(a,b);
for(int i=0;i<=strlen(a);i++)
sum+=a[i];
}
char *getname()
{
return a;
}
friend bool operator<(mystring a,mystring b) //类的sort排序,仅仅要重载运算符就可以,用友元函数或成员函数都可重载。仅仅只是不能将參数定义为引用
{
return a.sum<b.sum;
}
};
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
char b[20][50];
mystring ss[20];
for(int i=0;i<n;i++)
{
cin>>b[i];
ss[i].setmystring(b[i]);
}
sort(ss,ss+n);
for(int i=0;i<n;i++)
{
cout<<ss[i].getname()<<" ";
}
cout<<endl;
}
}
/**************************************************************
Problem: 2129
User: jk1_201330551105
Language: C++
Result: Accepted
Time:0 ms
Memory:1484 kb
****************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: