题目 : Phone Bills
分值 : 25
难度 : 最有价值的题
思路 : 思路一开始我就很清晰,对于每个记录全存进来,然后对name第一关键字time第二关键字
排序,然后遍历排序之后的同一个人 on-off匹配,筛掉不匹配的项,然后一个遍历。
坑点 : 坑点有点多,不过每个坑点都对应我一直以来的一些盲点,所以我选择一一阐述。
评语 : 解决方案很容易想到,但是因为需要处理很多细节
第一个知识盲点
一开始代码能跑出例程,但是在pat系统上提交之后全是运行时错误,很不解,后来想出来一个歪招,就是在每一个地方尝试性 #if 0 #endif 然后提交,最终终于找出原来是1
string old_name = NULL;
string 字符串不可以初始化为NULL,虽然能通过编译,但是出现运行时错误的主因就是这个,其次string也不能和NULL比较,要是用empty()或者==””。
第二个玄学坑
我使用结构体记录数据,结构体内部参数是string型,而我对结构体进行排序时利用的是qsort进行排序,这在很早以前有道题我就发现了,我用qsort进行排序在本地跑的确能够通过,但是在pat上跑总是会出现段错误,其中的问题深究半天没有发现,网上看发现都没有人像我这么傻,用的c++的string还有c的qosrt,为了今后不再继续躺这个坑,我选择使用sort作为我新的排序工具。说实话:相比而言,sort比qsort好用。。
1 |
|
具体代码如下
1 |
|