10905 - Children's Game----需要考虑全面!(使用简单方法!!!!)
来源:互联网 发布:黄景瑜是淘宝什么模特 编辑:程序博客网 时间:2024/05/01 06:55
#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<set>#include<cstring>#include <algorithm>#define N 60#define MIN 1e-11#define M 32010#define MM 70000using namespace std;int n,t;char a[N][100];int strcmpp(char a[],char b[]){ int lena=strlen(a),lenb=strlen(b); int i=0; for(;i<lena||i<lenb;++i) { if(i>=lena) { if(a[i%lena]<b[i]) return-1; if(a[i%lena]>b[i]) return 1; } else if(i>=lenb) { if(b[i%lenb]<a[i]) return 1; if(b[i%lenb]>a[i]) return -1; } else { if(a[i]<b[i]) return-1; if(a[i]>b[i]) return 1; } } //以下为修改之后添加的代码!! int len=lena+lenb; for(;i<len;i++) { if(b[i-lena]>a[i-lenb]) return 1; else if(b[i-lena]<a[i-lenb]) return -1; } // return 0;}int strcmppp(char a[],char b[])//更好的方法,直接按照题意来比较大小,好!!!{ char bb[200]="",aa[200]=""; strcat(aa,a); strcat(aa,b); strcat(bb,b); strcat(bb,a); return strcmp(aa,bb);}int cmp(const void *a,const void *b){return -strcmpp((char*)a,(char*)b);}int main(){#ifndef ONLINE_JUDGE freopen("ex.in","r",stdin);#endif while(scanf("%d",&n)&&n) { for(int i=0;i<n;++i) scanf("%s",a[i]);// cout<<"strcmpp(a[0],a[1])="<<strcmpp(a[0],a[1])<<endl; qsort(a,n,sizeof(a[0]),cmp); for(int i=0;i<n;++i) printf("%s",a[i]); printf("\n"); } return 0;}