posts - 97,  comments - 93,  trackbacks - 0
          Problem Statement

          A speed radar is installed in a highway zone where the maximum speed limit is maxLimit mph, and the minimum speed limit is minLimit mph. Any reading that is strictly above or below this interval is an infringement.
          Periodically, the radar readings are analyzed to make sure that the sensors are working properly. It is assumed that most drivers obey speed limits, and therefore, the radar will be considered faulty if more than 10% of its readings are infringements.
          Given the radar readings over a period of time, return the average speed of all cars that are driving within the speed limits. If the radar is faulty, return 0.0.
          Definition
          ????
          Class:
          SpeedRadar
          Method:
          averageSpeed
          Parameters:
          int, int, int[]
          Returns:
          double
          Method signature:
          double averageSpeed(int minLimit, int maxLimit, int[] readings)
          (be sure your method is public)


          Notes
          -
          The returned value must be accurate to within a relative or absolute value of 1E-9.
          Constraints
          -
          maxLimit will be between 1 and 200, inclusive.
          -
          minLimit will be between 1 and maxLimit, inclusive.
          -
          readings will contain between 1 and 50 elements, inclusive.
          -
          Each element of readings will be between 1 and 200, inclusive.
          Examples
          0)

          1
          50
          {45, 40, 50}
          Returns: 45.0
          With all drivers within the speed limits, the return value is just the average speed.
          1)

          1
          50
          {42,43,44,45,46,47,48,49,50,51}
          Returns: 46.0
          There is only one driver infringing the limit, and it represents 10% of the total readings. The average speed of the other readings is 46.0.
          2)

          1
          50
          {42,46,48,50,52}
          Returns: 0.0
          Only one reading is outside the given limits, but it represents 20% of the total number of readings. We therefore assume that the radar is not working and return 0.0.
          3)

          20
          60
          {25,45,45,43,24,9,51,55,60,34,61,23,40,40,47,49,33,23,47,54,54}
          Returns: 41.68421052631579

          This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
           1 /**
           2   * Author Nicky Qu
           3   * All Rights Reserved Oct 20th, 2007
           4 */
           5 import java.util.Formatter;
           6 
           7 public class SpeedRadar{
           8   private double averageReading = 0.0;
           9    public double averageSpeed(int minLimit,int maxLimit,int[] readings){
          10       int sum = 0;
          11       int countinF = 0;
          12       double rate =0.0;
          13       for(int i=0;i<readings.length;i++){
          14          if((readings[i]> minLimit-1)&&(readings[i]<maxLimit+1)){
          15          sum = sum +readings[i];
          16          }else{
          17            countinF+=1;
          18            rate = countinF*1.0/readings.length;
          19            if(rate>0.1){
          20               sum = 0;
          21               break;
          22             }
          23          }
          24       }
          25       averageReading = sum*1.0/(readings.length-countinF);
          26       Formatter f = new Formatter();
          27       return Double.parseDouble(f.format("%.15e", averageReading).toString());
          28    }
          29 }


          posted on 2007-10-20 13:25 wqwqwqwqwq 閱讀(1274) 評論(1)  編輯  收藏 所屬分類: Data Structure && Algorithm

          FeedBack:
          # re: TopCoder TCHS1
          2007-10-22 13:29 | 曲強 Nicky
          public class SpeedRadar {

          public double averageSpeed(int minLimit, int maxLimit, int[] readings) {
          int bad = 0;
          int sum = 0;
          for (int a : readings)
          if (a < minLimit || a > maxLimit)
          bad++;
          else
          sum += a;
          if(bad*10>readings.length)
          return 0.0;
          else
          return sum*1./(readings.length-bad);
          }
          }  回復  更多評論
            
          <2007年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910




          常用鏈接

          留言簿(10)

          隨筆分類(95)

          隨筆檔案(97)

          文章檔案(10)

          相冊

          J2ME技術網站

          java技術相關

          mess

          搜索

          •  

          最新評論

          閱讀排行榜

          校園夢網網絡電話,中國最優秀的網絡電話
          主站蜘蛛池模板: 镇巴县| 广州市| 江山市| 会宁县| 纳雍县| 抚顺县| 铜山县| 黄陵县| 安达市| 米泉市| 宜丰县| 丁青县| 依安县| 凌云县| 临江市| 宁化县| 普格县| 广宗县| 张家界市| 双流县| 西安市| 盐山县| 闽侯县| 德庆县| 阳山县| 南川市| 双桥区| 高州市| 孟州市| 西峡县| 汝阳县| 马鞍山市| 新闻| 城口县| 阿拉尔市| 湄潭县| 鹰潭市| 汝南县| 高台县| 博白县| 锦屏县|