【杭电】[1872]稳定排序

来源:互联网 发布:基佬艾滋病知乎 编辑:程序博客网 时间:2024/05/22 19:05

这里写图片描述
这里写图片描述
这里写图片描述

对结构体排序
然后与输入进行比较

判断排序是否完全相同
不稳定是指分数正确但是名字排序不对
需要注意当分数相同时
正确的排序应是先输入的排在前面
所以可以记录一下输入标号

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node {    char s[55];    int x,id;} a[320],b[320];bool cmp(node A,node B) {    if(A.x==B.x)        return A.id<B.id;//      return strcmp(A.s,B.s)<0;    else        return A.x>B.x;}int main() {    int n;    while(scanf("%d",&n)!=EOF) {        for(int i=0; i<n; i++) {            scanf("%s %d",&a[i].s,&a[i].x);            a[i].id=i;        }        sort(a,a+n,cmp);        int flag=0;        for(int i=0; i<n; i++) {            scanf("%s %d",&b[i].s,&b[i].x);            b[i].id=0;            if(flag<2) {                if(strcmp(a[i].s,b[i].s)!=0)                    flag=1;                if(b[i].x!=a[i].x)                    flag=2;            }        }        if(flag==0)            printf("Right\n");        else {            if(flag==1)                printf("Not Stable\n");            else if(flag==2)                printf("Error\n");            for(int i=0; i<n; i++)                printf("%s %d\n",a[i].s,a[i].x);        }    }    return 0;}

题目地址:【杭电】[1872]稳定排序

0 0