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

          搜索

          •  

          最新評論

          閱讀排行榜

          校園夢網網絡電話,中國最優秀的網絡電話
          主站蜘蛛池模板: 武陟县| 德格县| 册亨县| 噶尔县| 逊克县| 上犹县| 太康县| 乐东| 大英县| 徐闻县| 土默特左旗| 临汾市| 馆陶县| 加查县| 南宁市| 濉溪县| 雅安市| 淮安市| 鹤山市| 松阳县| 红安县| 九龙城区| 福安市| 潜江市| 仙桃市| 常熟市| 望城县| 溧水县| 昌乐县| 绍兴县| 宁远县| 沾化县| 平阳县| 宝山区| 广平县| 鄱阳县| 南川市| 宜兴市| 沙洋县| 安泽县| 南安市|