2129: 船上的第二次测试第三个问题
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 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
****************************************************************/
版权声明:本文博客原创文章。博客,未经同意,不得转载。