zoukankan      html  css  js  c++  java
  • A1016 Phone Bills(25分)(PA 15/25,所以先记录思路)

    0. "计算时间"的思路:
      计算 T1~T2 的时间差我是分为 t0-T1 和 T2-tn 来算的,其中 t0、tn 是整点小时数
      
      比如现在计算 07:00-05:59,我这里是 (06:00-05:59)+(07:00-07:00) 的思路————即 T1=05, T2=07, t0=06, tn=07

        

      基于上面这个思路,把两个 dd1:HH1:mm1-dd2:HH2:mm2 分三部分处理:
        1) 计算分钟数
        2) 计算小时数
        3) 计算天数
      比如计算 01:07:00-01:05:59:
        1) 计算分钟数:min1=t0-05:59; min2=07:00-tn
        2) 计算小时数:hour=tn-t0
        3) 计算天数: day=01:07-01:05

    /* 伪码 */
    
    //找出最接近起止两时段的小时 t0、tn
    
    while (T1 > t0++);
    
    while (T2 < tn) tn--;
    
     
    
    //前一时段的分钟数
    
    min = 计算时间差(t0 - T1);
    
    dollar += (cent[t0 - 1] * min);//cent[]保存各小时的收费
    
    duration += min;
    
     
    
    //后一时段的分钟数
    
    min = 计算时间差(T2 - tn);
    
    dollar += (cent[tn] * min);//cent[]保存各小时的收费
    
    duration += min;
    
     
    
    //计算 t0~tn 之间有多少个小时
    
    hour = 计算时间差(dd1:HH1 - dd2:HH2);
    
    for( 0~hour 个小时 ) {
    
    if (到了24小时)    小时重置为0;
    
    dollar += (cent[t0] * 60);
    
    duration += 60;
    
    }

     

    1. 输入:略
    2. 排序:略
    3. "取数组中两个有效的时段,计算它们的时间差与话费"的思路:
      就是最简单的想法,从头开始遍历,遇到第一个"on-line"的同时判断下一个是否"off-line"?是就输出:否就检查下一个"on-line"

    /* 伪码 */
    
    for (i=0; i<n; ) {
    
        if (i==on-line 且 i+1==off-line)
    
        { 计算时间(i.[dd:HH:mm], i+1.[dd:HH:mm]); i+=2; }
    
        else    { i+=1; }
    
    }

    代码地址

  • 相关阅读:
    在报表中录入数据时如何实现行列转换
    CNN卷积神经网络代码实现【基于Python,Tensorflow】
    Spark Word2Vec算法代码实现
    Spark ML逻辑回归
    SolrCloud搜索引擎集群搭建【伪分布式、完全分布式】
    Scala之List,Set及Map基本操作
    bs4爬虫入门
    Scrapy爬虫入门
    Solr参数详解【Web客户端,DIH数据导入】
    Python多态
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14258457.html
Copyright © 2011-2022 走看看