ArcTan

dfs
随笔 - 16, 文章 - 117, 评论 - 6, 引用 - 0
数据加载中……

hdu 2093(结构体排序 水题哇哇哇)

hdu 2093
结构体排序
struct student
{
      char name[20];
      int AC,time;
}
首先按照AC,time,如果前两个都相同就按照name的字典序排序。

这个读入很简单,sscanf();这个函数还不会用。

输出需要名字占10,靠左,则用“%-10s”

直接贴代码:WA了一次,中间调试输出的东西忘记删除了。
总结:字符串类题目还是要自己做做,虽然有些很恶心,恶心两次就好了!哈哈,

#include<stdio.h>
#include
<string.h>
#include
<math.h>
struct student
{
    
char name[20];
    
int AC,time;
} p[
1005],temp,tt;

int tot;

int cmp(student a,student b)  
{
    
if (a.AC>b.AC)
        
return 1;
    
if (a.AC==b.AC&&a.time<b.time)
        
return 1;
    
int i=0;
    
while (a.AC==b.AC&&a.time==b.time&&i<strlen(a.name)&&i<strlen(b.name))
    {
        
if (a.name[i]<b.name[i])
            
return 1;
        i
++;
    }
    
return 0;
}

int qsort(int l,int r)      //自己还是不习惯条用stl里的sort()
{
    
int i,j;
    i
=l;
    j
=r;
    temp
=p[(i+j)/2];
    
while (i<=j)
    {
        
while (i<=j&&cmp(p[i],temp))    i++;
        
while (i<=j&&cmp(temp,p[j]))    j--;
        
if (i<=j)
        {
            tt
=p[i];
            p[i]
=p[j];
            p[j]
=tt;
            i
++;
            j
--;
        }
    }
    
if (l<j)    qsort(l,j);
    
if (i<r)    qsort(i,r);
    
return 0;
}

int main()
{
    
int n,m,i,j,tmp;
    
char ch;
    scanf(
"%d%d",&n,&m);
    tot
=0;
    
while (scanf("%s",&p[0].name)==1&&p[0].name[0]!='0')
    {
        tot
++;
        p[tot]
=p[0];
        p[tot].AC
=0;
        p[tot].time
=0;
        
for (i=1; i<=n ; i++ )
        {
            scanf(
"%d",&tmp);
            
if (tmp>0)
            {
                p[tot].AC
++;
                p[tot].time
+=tmp;
                ch
=getchar();
                
if (ch=='(')
                {
                    scanf(
"%d",&tmp);
                    p[tot].time
+=m*tmp;
                    getchar();
                }
            }
        }
    }

    qsort(
1,tot);

    
for (i=1; i<=tot ; i++ )
    {

        printf(
"%-10s %2d %4d\n",p[i].name,p[i].AC,p[i].time);
    }
    
return 0;
}

posted on 2012-06-07 15:07 wangs 阅读(550) 评论(0)  编辑 收藏 引用 所属分类: ACM-水题


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理