- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Sedgewick & Wayne 的算法,练习 1.2.3:
Write an
Interval2D
client that takes command-line argumentsN
,min
, andmax
and generatesN
random 2D intervals whose width and height are uniformly distributed betweenmin
andmax
in the unit square. Draw them onStdDraw
and print the number of pairs of intervals that intersect and the number of intervals that are contained in one another.
Interval2D 公开了以下 API:
Interval2D(Interval1D x, Interval1D y)
boolean intersects(Interval2D)
boolean contains(Point2D)
double area()
void draw()
是否可以仅使用这些方法检查一个 Interval2D
是否包含在另一个中?
最佳答案
A) 了解情况:
根据一维区间定义二维区间 A 和 B:
A = Ixa x Iya = [x1a, x2a] x [y1a, y2a]
B = Ixb x Iyb = [x1b, x2b] x [y1b, y2b]
然后
A is contained in B, iff
Ixa = [x1a, x2a] is contained in Ixb [x1b, x2b] and
Iya = [y1a, y2a] is contained in Iyb = [y1b, y2b].
使用
I1 = [a, b] is contained in I2 = [c, d] iff c <= a and b <= d.
这类似于 Interval2D ( http://algs4.cs.princeton.edu/12oop/Interval2D.java.html ) 和 Intervall1D ( http://algs4.cs.princeton.edu/12oop/Interval1D.java.html ) 中相交方法的实现,只是它们测试条件的逻辑逆。
B) 现在你的方法:
contains(Point2D) 应该允许做测试,如果你检查左下角 (x1a, y1a) 和右上角 (x2a, y2a) 点:
A is contained in B, iff B contains (x1a, y1a) and B contains (x2a, y2a).
丑陋的是,虽然 Interval1D 有 getter 来访问私有(private)的左右坐标,但 Interval2D 没有访问它的私有(private) x 和 y(一维)间隔。您可以从其 toString() 输出中解析它们,但这很丑陋并且工作量太大。创建一些父类(super class)
public class Rect {
public Interval1D x;
public Interval1D y;
public Interval2D r;
Rect(Interval1D px, Interval1D py) {
x = px;
y = py;
r = new Interval2D(px, py);
}
public boolean contains(Rect that) {
if (!this.r.contains(new Point2D(that.x.left(), that.y.left()))) return false;
if (!this.r.contains(new Point2D(that.x.right(), that.y.right()))) return false;
return true;
}
}
而且使用起来很丑陋。
关于java - Sedgewick & Wayne 的算法,练习 1.2.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17639548/
我理解快速排序的概念,而且我看到的大多数实现对我来说都非常有意义。但是 Robert Sedgewick 没有,他的实现是按照以下方式进行的: private void sort(in
我正在解决一个优化问题,其中我必须最大化流网络。我实现了一个基于 C++ 代码的流最大化算法,该算法基于以下 java 代码,该算法出现在 Sedgewick “Algorithms in Java,
我必须在不使用 Fibonacci 堆的情况下实现 Dijkstra 和 Sedgewick-Vitter 算法。关于 Dijkstra 全网的信息,但我找不到伪代码或 Sedgewick-Vitte
我正在阅读 Robert Sedgewick 写的关于算法的书。 public static void sort(Comparable[] a) { // Sort a[] into increa
根据经验,这本书对于学习算法创建有多好? 最佳答案 我看过的最常见的算法书是Cormen, Leiserson, Rivest, and Stein's Introduction to Algorit
我正在阅读 Robertsedwick 的 C++ 排序算法 Property 1: Insertion sort and bubble sort use a linear number of com
对于新手问题,我深表歉意。我正在尝试在 Robert Sedgewick 和 Kevin Wayne 的第 4 版算法书中给出的 Eclipse 中运行 Java 程序:https://algs4.c
所以,最近,出于好奇,我买了 CLRS 的《算法导论》一书。当我开始阅读这本书时,我注意到书中一些非常典型的算法是以非常不同的方式实现的。 给定 CLRS 的快速排序实现与流行的快速排序 Hoare
Sedgewick & Wayne 的算法,练习 1.2.3: Write an Interval2D client that takes command-line arguments N, min,
在书名的第5章中,有描述“分而治之”的方法来寻找数组中的最大数,并附上图片: 使用的 Java 代码: static double max(double a[], int l, int r) {
我正在阅读 Sedgewick 和 Wayne 的算法。 以下代码计算无向图 G 中自环的数量。 我不明白为什么这段代码返回 count/2 而不是 count。 请解释原因。 第 523 页 pub
我对 quickSort 中的 3 路分区很感兴趣,网址为 http://algs4.cs.princeton.edu/23quicksort/Quick3way.java.html因为它使用该分区来
我正在阅读算法第 4 版。我在阅读第 3 章搜索时有一些疑问。从成本汇总BinarySearchST 的插入成本(最坏情况下为 2N)比 SequentialSearchST 差一点(在最坏的情况下为
我在学习queue-based Bellman-Ford algorithm 的方法对于来自 Robert Sedgewick and Kevin Wayne - Algorithms, 4th ed
正在阅读 Algorithms book .问答部分 chapter 2.4在 heapsort基于优先级队列的实现(p.328)有如下一段话(让我们关注优先级队列堆,而不是堆排序): Q. I’m
我是一名优秀的程序员,十分优秀!