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 ****************************************************************/
版权声明:本文博客原创文章。博客,未经同意,不得转载。