HDU 2115

来源:互联网 发布:dreamweaver做淘宝分类 编辑:程序博客网 时间:2024/05/16 18:50

这道题目一看就知道是用结构体做,因为有两个限制条件,一下是两个代码:(代码不同,是对字符串进行排序所用的方法不同)#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>//用字符串string来比较大小一定要加这个头文件using namespace std;struct p{    string name;    int  hour;    int fen;    int time;    int paiming;} f[11];int cmp(p x, p y){    if(x.hour==y.hour)    {        if(x.fen==y.fen)        {            //return strcmp(x.name,y.name)<0?1:0;            return x.name<y.name;        }        else            return x.fen<y.fen;    }    else        return x.hour<y.hour;}int main(){    int n,i;    int tcase=1;    while(scanf("%d",&n),n)    {        for(i=0; i<n; i++)        {            cin>>f[i].name;            scanf("%d:%d",&f[i].hour,&f[i].fen);            f[i].time=60*f[i].hour+f[i].fen;        }        sort(f,f+n,cmp);        f[0].paiming=1;        for(i=1; i<n; i++)        {            if(f[i].time==f[i-1].time)            {                f[i].paiming=f[i-1].paiming;            }            else                f[i].paiming=i+1;        }        if(tcase!=1)        {            printf("\n");        }        printf("Case #%d\n",tcase++);        for(i=0; i<n; i++)        {            cout<<f[i].name<<" ";            printf("%d\n",f[i].paiming);        }    }    return 0;}二:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>using namespace std;struct p{    string name;    int  hour;    int fen;    int time;    int paiming;} f[11];int cmp(p x, p y){    if(x.hour==y.hour)    {        if(x.fen==y.fen)        {            return strcmp(x.name,y.name)<0?1:0;//这里如果两个字符串相等的话就==0,如果第一个字符串比第二个字符串小==-1,如果第一个字符串比第二个字符串大==1;这是strcmp()函数        }        else            return x.fen<y.fen;    }    else        return x.hour<y.hour;}int main(){    int n,i;    int tcase=1;    while(scanf("%d",&n),n)    {        for(i=0; i<n; i++)        {            cin>>f[i].name;            scanf("%d:%d",&f[i].hour,&f[i].fen);            f[i].time=60*f[i].hour+f[i].fen;        }        sort(f,f+n,cmp);        f[0].paiming=1;        for(i=1; i<n; i++)        {            if(f[i].time==f[i-1].time)            {                f[i].paiming=f[i-1].paiming;            }            else                f[i].paiming=i+1;        }        if(tcase!=1)        {            printf("\n");        }        printf("Case #%d\n",tcase++);        for(i=0; i<n; i++)        {            cout<<f[i].name<<" ";            printf("%d\n",f[i].paiming);        }    }    return 0;}

原创粉丝点击