类别sort使用排序

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 
****************************************************************/


版权声明:本文博客原创文章。博客,未经同意,不得转载。

你可能感兴趣的:(sort)