• Algs4- 1.5.18随机网格生成器-(未读懂题)


    1.5.18随机网格生成器。编写一个程序RandomGrid,从命令行接受一个int值N,生成一个NXN的网格中的所有连接。它们的排列随机且方向随机(即(p q)和(q p)出现的可能性是相等的),将这个结果打印到标准输出中。可以使用RandomBag将所有连接随机排列(请见练习1.3.34),并使用如右下所示的Connection嵌套类来将p和q封装到一个对象中。将程序打包成两个静态方法:generate(),接受参数N并返回一个连接的数组;main(),从命令行接受参数N,调用generate(),遍历返回的数组并打印出所有连接。
    答:感觉没有完全读懂题。
    public class RandomGrid
    {
        public static class Connection
        {
            int p;
            int q;
            public Connection(int p,int q)
            {this.p=p; this.q=q;}
           
            public int P()
            {return p;}
       
            public int Q()
            {return q;}
        }
        public static Connection[] generate(int N)
        {
            UF uf=new UF(N*N);
            Bag<Connection> bagOfConn=new Bag<Connection>();
             while (uf.count()>1)
               {
                   int p=StdRandom.uniform(N*N);
                   int q=StdRandom.uniform(N*N);
                   if(uf.connected(p,q)) continue;
                   uf.union(p,q);
                    bagOfConn.add(new Connection(p,q));
                }//end while
            Connection[] conns=new Connection[bagOfConn.size()];
            int i=0;
            for (Connection item:bagOfConn)
            {
                conns[i]=item;
                i++;
            }
            return conns;
        }
       

        public static void main(String[] args)
        {
            int N=Integer.parseInt(args[0]);
            Connection[] conn=generate(N);
            //
            int i=0;
            while (i<conn.length)
            {
                StdOut.printf("p=%-6d q=%-6d ",conn[i].P(),conn[i].Q());
                //
                i++;
            }
        }
    }


  • 相关阅读:
    python之各种包
    正则表达式
    import/模块的导入
    迭代器/可迭代对象/生成器
    Day2 列表list
    Day1 字符串格式化
    Day1 字符编码及编码函数
    Python 学习笔记 之 随着学习不断更新的Python特性搜集
    Day1 input&print
    Newtonsoft.Json日期转换
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854815.html
Copyright © 2020-2023  润新知