求助各位佬,下面这个方法只WA了第一个点和subtask的最后一个点,实在找不出来问题了,谢谢佬们!
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 30;
string a[N];
bool cmp(string a,string b){
int min_len=min(a.size(),b.size());
for(int i=0;i<min_len;i++){
int a_digit=a[i]-'0';
int b_digit=b[i]-'0';
if(a_digit>b_digit) {
return true;
}
else if(a_digit<b_digit){
return false;
}else{
continue;
}
}
//这里是关键
if(a.size()>min_len){
return cmp(a.substr(min_len+1),b);
}
if(b.size()>min_len){
return cmp(a,b.substr(min_len+1));
}
return true;
}
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
string temp;
cin >> temp;
a[i]=temp;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
cout << a[i];
}
return 0;
}