博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT-1016 Phone Bills (25)
阅读量:4969 次
发布时间:2019-06-12

本文共 2014 字,大约阅读时间需要 6 分钟。

http://pat.zju.edu.cn/contests/pat-a-practise/1016 #include
#include
#include
#include
#include
using namespace std;struct Time{ int dd; int hh; int mm;};struct Record{ string name; int mon; int dd; int hh; int mm; bool flag;//true on,false for of }record[1010];struct Bill{ Time begin; Time end;}bill[1010][13];// name index and month int cost[24];double compute(Time b,Time e){ int j=b.hh; int d=b.dd; double sum=0; if(b.dd==e.dd&&b.hh==e.hh) { return (e.mm-b.mm)*cost[j]; } sum+=(60-b.mm)*cost[j]; while(true) { //printf("%d %d %lf\n",d,j,sum); j++; if(j>=24) { j=j%24; d++; } if(d==e.dd&&j>=e.hh) break; sum+=cost[j]*60; } sum+=e.mm*cost[j]; //printf("%d %d %lf\n",d,j,sum); //printf("\n"); return sum;}bool cmp(const Record & a,const Record & b){ if(a.name
name_set; for(int i=0;i<24;i++) { scanf("%d",&cost[i]); } int n; string name,time,flag; int mon,dd,hh,mm; vector
::iterator it; scanf("%d",&n); for(int i=0;i
>name>>time>>flag; name_set.push_back(name); //it=find(name_set.begin(),name_set.end(),name); //cout<
<

PAT:

     这道题目的意思就是,给你一个电话账单。然后计算用户的的话费,这道题目坐下来比较大的一个启发就是,当你考虑的情况很多的时候,你可以考虑一下反面,这样就会简单多了。比如错误的情况很多,那么久考虑正确的情况。正确情况很多,那么就考虑错误的情况,比如账单中错误的顺序很多比如off on,不是同一个月份,不是同一个而用户等等。通过if(record[i].flag&&!record[i+1].flag&&record[i].name==record[i+1].name&&record[i].mon==record[i+1].mon)来进行判就可以了。其余错误情况就不去管它了。

   时间金钱的计算有一个难点,起初就是把开头和结尾的截掉,只是取中间整数部分,开头结尾另外算。不过当时没有考虑一个case,就是相差仅仅一个小时之内的情况,这种情况比如01:01:02:23 -- 01:01:02:25这种情况要是用起初的情况,那么计算出来就是60-23分钟,显然不对,所以在计算的时候加入了一个特别判断。

    bool cmp(first,second)的返回值意思是first should before second?return true ,yes。return false,no

    这道题目太繁杂了,起初只有过了一个case,后面网上一下,发现用户可能没有合法的输入,只保证每次输入有一个合法的输入。增加一个flag之后过了一个case

chun 01:01:23:59 on-line

chun 01:02:00:59 off-line

比如这样的临街测试数据,发现这道题目临界数据挺多的。还是得多测试临界数据,考察临界情况。

转载于:https://www.cnblogs.com/championlai/p/3986851.html

你可能感兴趣的文章
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
js 基础拓展
查看>>
C#生成随机数
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>