1.2.1^
^(表示待优化的程序)
import edu.princeton.cs.algs4.Counter;
import edu.princeton.cs.algs4.Interval1D;
import edu.princeton.cs.algs4.Interval2D;
import edu.princeton.cs.algs4.Point2D;
import edu.princeton.cs.algs4.StdOut;
public class Exercise1_2_1 {
public static void main(String[] args){
int N = Integer.parseInt(args[0]);
Interval1D xinterval = new Interval1D(.1,.9);//这里的面积为0.64
Interval1D yinterval = new Interval1D(.1,.9);
Interval2D box = new Interval2D(xinterval,yinterval);
box.draw();
double[][] poly = new double[N][2];
Counter c = new Counter("hits");
for(int i = 0;i < N;i++){
double x = Math.random();
double y = Math.random();
Point2D p = new Point2D(x,y);
poly[i][0] = x;
poly[i][1] = y;
if(!box.contains(p))
c.increment();
else
p.draw();
}
double[] d = new double[N];
for(int i = 0;i < N - 1;i++){
for(int j = i + 1;j < N;j++){
d[i] = (poly[i][0] - poly[j][0]) * (poly[i][0] - poly[j][0]) + (poly[i][1] - poly[j][1]) * (poly[i][1] - poly[j][1]);
}
}
double m = d[0];
for(int i = 0; i < N - 1;i++){
//StdOut.println(d[i]);
if(m > d[i])
m = d[i];
}
StdOut.println(Math.sqrt(m));
StdOut.println(c);
StdOut.println(box.area());
}
}
1.2.2
import edu.princeton.cs.algs4.Interval1D;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class Exercise1_2_2{
public static void main(String[] args){
int N = Integer.parseInt(args[0]);
Interval1D[] interval = new Interval1D[N];
double[] d = StdIn.readDoubles();
for(int i = 0;i < N;i++){
interval[i] = new Interval1D(d[2 * i],d[2 * i + 1]);
for(int j = N / 2;j < N;j++){
if(i != j)
if(interval[i].intersects(interval[j])){
StdDraw.line(interval[i].left(),0.5,interval[i].right(),0.5);
StdOut.println("Interval[" + i + "] intersects with Interval[" + j + "]");
}
}
}
}
}
1.2.3
import edu.princeton.cs.algs4.Interval1D;
import edu.princeton.cs.algs4.Interval2D;
import edu.princeton.cs.algs4.Point2D;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdOut;
public class Exercise1_2_3{
public static void main(String[] args){
StdOut.println("Enter N: ");
int N = Integer.parseInt(args[0]);
StdOut.println("Enter min and max: ");
double min = Double.parseDouble(args[1]);
double max = Double.parseDouble(args[2]);
StdDraw.setXscale(0,1