算法 第四版 习题 答案1.2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 {