P1012 [NOIP1998 提高组] 拼数

Archie

虽然只是个普通的普及
但我还要写一些

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n;
string s[30];
bool cmp(string a,string b){
   int al=a.length();
   int bl=b.length();
   int x=0;
   int y=0;
   int c=max(al,bl);
   for(int i=c-1;i>=0;--i){
   	if(a[x]==b[y]){
   		x=min(x+1,al-1);
   		y=min(y+1,bl-1);
   	}
   	if(a[x]<b[y])
   	return 0;
   	if(a[x]>b[y])
   	return 1;
   }
   return 1;
}
int main(){
   scanf("%d",&n);
   for(int i=1;i<=n;++i){
   	cin>>s[i];
   }
//	cout<<cmp(s[3],s[4]);
   sort(s+1,s+n+1,cmp);
   for(int i=1;i<=n;++i){
   	cout<<s[i];
   }
   return 0;
}
posted @ 2021-07-17 11:13  Simex  阅读(45)  评论(0编辑  收藏  举报