1. 程式人生 > >hiho 第214周 Sorting Photo Files(排序)

hiho 第214周 Sorting Photo Files(排序)

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>
11
#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 }
View Code

hiho 第214周 Sorting Photo Files(排序)