hiho 第214周 Sorting Photo Files(排序)
阿新 • • 發佈:2018-08-20
ast iostream syn () 比較 sin 分享圖片 fine spa
1.自定義排序,兩個字符串提取出全字符和全數字的子段,如果全字符的子段相等,比較得到的數字大小。
1 #include <set> 2 #include <map> 3 #include <queue> 4 #include <deque> 5 #include <stack> 6 #include <cmath> 7 #include <cstdio> 8 #include <vector> 9 #include <string> 10 #include <cstring> 11View Code#include <fstream> 12 #include <iostream> 13 #include <algorithm> 14 using namespace std; 15 16 #define eps 1e-8 17 #define PI acos(-1.0) 18 #define INF 0x3f3f3f3f 19 #define FAST_IO ios::sync_with_stdio(false) 20 const int N=123; 21 string s[N]; 22 23 bool cmp(string s1,string s2){24 int n1=s1.size(); 25 int n2=s2.size(); 26 string s11="",s22=""; 27 int num1=0,num2=0; 28 for(int i=0;i<n1;i++){ 29 if(s1[i]>=‘0‘&&s1[i]<=‘9‘){ 30 s11=s1.substr(0,i); 31 break; 32 } 33 } 34 for(int i=0;i<n1;i++){ 35 if(s1[i]>=‘0‘&&s1[i]<=‘9‘){ 36 num1=10*num1+(s1[i]-‘0‘); 37 } 38 } 39 for(int i=0;i<n2;i++){ 40 if(s2[i]>=‘0‘&&s2[i]<=‘9‘){ 41 s22=s2.substr(0,i); 42 break; 43 } 44 } 45 for(int i=0;i<n2;i++){ 46 if(s2[i]>=‘0‘&&s2[i]<=‘9‘){ 47 num2=10*num2+(s2[i]-‘0‘); 48 } 49 } 50 if(s11==s22){ 51 return num1<num2; 52 } 53 return s11<s22; 54 } 55 56 int main(){ 57 int n; 58 cin>>n; 59 for(int i=0;i<n;i++) cin>>s[i]; 60 sort(s,s+n,cmp); 61 for(int i=0;i<n;i++){ 62 if(i!=n-1) cout<<s[i]<<endl; 63 else cout<<s[i]; 64 } 65 return 0; 66 }
hiho 第214周 Sorting Photo Files(排序)