HDU 1861

来源:互联网 发布:淘宝客服的工资多少 编辑:程序博客网 时间:2024/04/25 17:10

wa了几次,原因在于读取数据和处理四舍五入的时候的写法的不适当,四舍五入一般可以这么写  double tmp=sum*1.0/ci;
                int tmps=(int)(tmp+0.5);

然后读取数据的时候那个读小时和分钟的时候可以直接%d:%d可以成功得到结果而不会受什么08之类的影响的。

学习了网上别人的代码,还是有一定借鉴意义的。

先贴上我修改后A掉的代码

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int a[110],tag,S[110],E[110],ci,h,m;double sum;char s[1];char ss[5];int main(){    memset(a,0,sizeof(a));    memset(S,0,sizeof(S));    memset(E,0,sizeof(E));    sum=0;    ci=0;    while(scanf("%d",&tag)!=EOF)    {        if(tag==-1)            break;            scanf("%s",s);            scanf("%d:%d",&h,&m);        if(tag==0)        {            if(ci==0)                printf("0 0\n");            else            {               printf("%d %.lf\n",ci,sum/ci);//结果四舍五入            }            memset(a,0,sizeof(a));            memset(S,0,sizeof(S));            memset(E,0,sizeof(E));            sum=0;            ci=0;            continue;        }       if(s[0]=='S')            {                a[tag]=1;                S[tag]=h*60+m;            }        else if(s[0]=='E'&&a[tag]==1)            {                E[tag]=h*60+m;                sum+=E[tag]-S[tag];                 ci++;                 a[tag]=0;            }        else if(s[0]=='E'&&a[tag]==0)            {                S[tag]=0;            }    }    return 0;}
然后是借鉴的代码

#include<stdio.h>  #include<string.h>  struct boat  {      int time;      int flag;  }a[105];  int count; /*记录次数*/  double sum; /*记录时间*/  int main()  {      int num,h,m;      char c;      sum=0;       count=0;      memset(a,0,sizeof(a)); /*初始化*/      while(1)      {          scanf("%d",&num); /*船号*/          if(num==-1)              break;          getchar();  /*吸收空格*/          scanf("%c",&c); /*租船状态*/          scanf("%d:%d",&h,&m);          if(num==0) /*一天租船工作结束*/          {              if(count)                   printf("%d %.lf\n",count,sum/count); /*输出时结果四舍五入*/              else                  printf("0 0\n");              sum=0;              count=0;              continue;          }          if(c=='S')          {              a[num].time=h*60+m;              a[num].flag=1;          }          else          {              if(a[num].flag) /*判断这条船是否租出去了*/              {                  sum+=h*60+m-a[num].time;  /*求出租船总时间*/                  count++;  /*次数*/                  a[num].flag=0; /*标记船已归还*/              }          }      }      return 0;  }  



0 0
原创粉丝点击