点击打开链接
ps: sort 排序是不稳定 , 用插入排序或者冒泡都可以, 不过前提是数据不会太大, 要不然会超限 。目前只想到之一种解题方法, 等有了更好的再更新。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; struct Stu { char name[55]; int sore; }; Stu stu1[303],stu2[303]; int main() { int n,i,j; while(scanf("%d",&n)!=EOF) { for( i=0;i<n;i++) { scanf("%s %d",&stu1[i].name ,&stu1[i].sore ); } for( i=0;i<n;i++) { scanf("%s %d",&stu2[i].name ,&stu2[i].sore ); } //插入排序 for( i=1;i<n;i++) { Stu key=stu1[i]; int j=i-1; while(j>=0&&stu1[j].sore<key.sore) { stu1[j+1]=stu1[j]; j--; } stu1[j+1]=key; } int a=0; int b=0; for( i=0;i<n;i++) if(strcmp (stu1[i].name , stu2[i].name) !=0 ) { a++; break; } for( i=0;i<n;i++) if(stu1[i].sore != stu2[i].sore ) { b++; break; } // printf("%d %d\n",a,b); if(b==0) { if(a==0) printf("Right\n"); else if(a==1) { printf("Not Stable\n"); for( j=0;j<n;j++) printf("%s %d\n",stu1[j].name,stu1[j].sore ); } } else if(b==1) { printf("Error\n"); for( j=0;j<n;j++) printf("%s %d\n",stu1[j].name,stu1[j].sore ); } } return 0; }