算法 第四版 习题 答案1.2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法第四版习题答案1.2

/*

* 1.2.1 编写一个Point2D的用例,从命令行接受一个整数N。在单位正方形内生成N个随机点,然后计算两点之间的最近距离

*/

public class testPoint2D {

public testPoint2D() {

// TODO Auto-generated constructor stub

}

public static void drawbox(double bw, double bh)

{

StdDraw.setPenRadius(0.005);

StdDraw.setPenColor(StdDraw.RED);

Interval1D xinterval = new Interval1D(0, bw);

Interval1D yinterval = new Interval1D(0, bh);

Interval2D box = new Interval2D(xinterval, yinterval);

box.draw();

}

public static Point2D[] drawpoint(int N)

{

Point2D[] p=new Point2D[N];

for(int i=0;i

{

double x=Math.random();

double y=Math.random();

p[i]=new Point2D(x, y) ;

p[i].draw();

}

return p;

}

public static double findmindist(Point2D[] p)

{

Point2D p1=p[0];

Point2D p2=p[1];

double mindist =p[0].distanceTo(p[1]);

StdDraw.setPenRadius(0.002);

StdDraw.setPenColor(StdDraw.RED);

int n=p.length ;

for(int i=1;i

for(int j=i+1;j

{

double temp=p[i].distanceTo(p[j]);

if(temp

{ mindist=temp;

p1=p[i];

p2=p[j];

}

}

p1.drawTo(p2);

StdOut.print("min dist="+mindist +p1.toString()+p2.toString());

return mindist;

}

public static void main(String[] args) {

int N=StdIn.readInt();//读取画点的数量

//StdDraw.setXscale(0,1 );

//StdDraw.setYscale(0,1);

drawbox(1,1);//画出一个单位大小的正方形

StdDraw.setPenRadius(0.01);

StdDraw.setPenColor(StdDraw.BLACK);

//drawpoint(N);//画出N个点

double min=findmindist(drawpoint(N));

}

}

/*

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

*/

public class testInterval1D {

public testInterval1D() {

// TODO Auto-generated constructor stub

}

public static void main(String[] args) {

// TODO Auto-generated method stub

int N = StdIn.readInt();

Interval1D[] interval = new Interval1D[N]; int T = N;

while (N > 0) {

double lo = N;

double hi = N + N;

interval[T - N] = new Interval1D(lo, hi); StdOut.println(interval[T - N].toString());

N--;

}

StdOut.println(" OUT:");

for (int i = 0; i < T - 1; i++)

for (int j = i + 1; j < T; j++) {

if (interval[i].intersects(interval[j]) == true) { StdOut.println(interval[i].toString()

+ interval[j].toString());

} else {

StdOut.println(interval[i].toString()

+ interval[j].toString() + "none");

}

}

}

}

/**

* 1.2.3

*/

/**

* @author Administrator

*

*/

public class TestInterval2D {

相关文档
最新文档