简单的字符串比较
#include<iostream> using namespace std; #include<string> #include<algorithm> struct node { string s; int num; }a[10010]; string f[4][9]={{"M","MM","MMM"},{"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},{"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},{"I","II","III","IV","V","VI","VII","VIII","IX"}}; bool cmp(node a,node b) { return a.s<b.s; } string change(int n) { string s1; int cnt1=1,cnt2=0; for(int i=1;i<=4;i++) { int t=n/(1000/cnt1); if(t==0) { cnt2++; n%=1000/cnt1; cnt1*=10; continue; } else { s1+=f[cnt2++][t-1]; } n%=1000/cnt1; cnt1*=10; } return s1; } int main() { //freopen("a.txt","r",stdin); int t; while(cin>>t) { while(t--) { int n; cin>>n; int i; for(i=0;i<n;i++) { cin>>a[i].num; a[i].s=change(a[i].num); } sort(a,a+n,cmp); cout<<a[0].num; for(i=1;i<n;i++) { cout<<" "<<a[i].num; } cout<<"/n"; } } return 0; }