• 中文
    • English
  • 注册
  • 查看作者
    • 《算法第四版》课后练习题1.2.2答案

      习题1.2.2

      编写一个Interval1D的用例,从命令行接受一个整数 N。从标准输入中读取 N 个间隔(每个间隔由一对double值定义)并打印出所有相交的间隔对。

      要点分析

      关于Interval1d的API请查看课本第47页。

      注意:该类中的构造方法中的lo,和hi,需要满足以下条件:lo <= hi ,否则将会报错:

      Exception in thread "main" java.lang.IllegalArgumentException: Illegal interval at edu.princeton.cs.algs4.Interval1D.<init>(Interval1D.java:74)

      另外:draw()方法也无法使用,在该类中并没有实现该方法。

      参考答案

      import edu.princeton.cs.algs4.Interval1D;
      
      import java.util.Scanner;
      
      /**
       * @description: Interval1d用例
       * @author: ZhangJia
       * @create: 2018-08-02 15:15
       **/
      public class Two {
          /**
          * @description: 创建N个间隔
          * @param:  用于存储间隔对的数组
          * @return:  Nothing
          */
          public static void In_Interval1(Interval1D[] i) {
              Scanner input = new Scanner(System.in);
              for (int j = 0; j < i.length; j++) {
                  System.out.println("请输入lo:");
                  double lo = input.nextDouble();
                  System.out.println("请输入hi:");
                  double hi = input.nextDouble();
                  i[j] = new Interval1D(lo,hi);
              }
          }
      
          /**
          * @description: 打印所有相交的间隔对
          * @param:  存储间隔对的数组
          * @return:
          */
      
          public static void print(Interval1D[] i) {
              for (int j = 0; j < i.length - 1; j++) {
                  for (int k = j + 1; k < i.length; k++) {
                      if(i[j].intersects(i[k])) {
                          System.out.println(i[j].length());
                          System.out.println(i[k].length());
                      }
                  }
              }
          }
          public static void main(String[] args) {
              int N = Integer.parseInt(args[0]);
              Interval1D[] i = new Interval1D[N];
              In_Interval1(i);
              print(i);
          }
      }

       

    • 0
    • 0
    • 0
    • 1.8k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: