zoukankan      html  css  js  c++  java
  • 算法第四版 1.2.2

    题目:

    编写一个Interval2D的用例,从命令行接收参数n,min,max的输入;生成n个随机的2D间隔,

    其宽和高均匀的分布在单位正方形中的min,和max之间。用StdDraw画出它们,并打印出相交的间隔数量;

    ac代码如下:(注意我没有用命令行输入,我用的是eclipse输入)

    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.StdIn;
    import edu.princeton.cs.algs4.StdOut;
    import edu.princeton.cs.algs4.StdRandom;
    
    public class No_1_2_3 {
        public static void main(String[] args)
        {
            int n = StdIn.readInt();
            
            Interval2D[] a = new Interval2D[n];
            double min = 0.0;
            double max = 1.0;
            for(int i =0;i<n;i++)
            {
                double xlo = StdRandom.uniform(min, max);//生成min到max之间的实数xlo
                double xhi = StdRandom.uniform(min, max);
                
                if(xlo>xhi)
                {
                    double temp;
                    temp = xlo;
                    xlo = xhi;
                    xhi = temp;
                }
                
                double ylo = StdRandom.uniform(min, max);
                double yhi = StdRandom.uniform(min, max);
                if(ylo>yhi)
                {
                    double temp;
                    temp = ylo;
                    ylo = yhi;
                    yhi= temp;
                }
                Interval1D x = new Interval1D(xlo,xhi);//先生成直线间隔x和y
                Interval1D y = new Interval1D(ylo,yhi);
                
                a[i] = new Interval2D(x,y);//再用x,y创建二维的对象
                a[i].draw();
                
            }
            
            StdDraw.setPenColor(StdDraw.RED);
            StdDraw.setPenRadius(0.005);
            Interval1D x0 = new Interval1D(min,max);
            Interval1D y0 = new Interval1D(min,max);
            new Interval2D(x0,y0).draw();
            
            int count1=0,count2 = 0;
            
            for(int i=0;i<n;i++)//计算有多少有交集的二维对象
            {
                for(int j=i+1;j<n;j++)
                {
                    if(a[i].intersects(a[j]))
                        count1++;
                    
                }
            }
            
            StdOut.println(count1);
            
            
    
        }
    }
  • 相关阅读:
    图片切换的练习
    固定定位
    绝对定位
    相对定位
    全局作用域 变量声明
    3种循环语句 JS基础
    解除绑定事件 和 封装兼容性addEvent 来处理针对于不同浏览器的兼容方法
    插入排序法 猴子选大王 检索的数组 验证身份证号码 练习
    [z]JSONP例子
    ireport related
  • 原文地址:https://www.cnblogs.com/qinmin/p/12274494.html
Copyright © 2011-2022 走看看