一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 432|回复: 4
收起左侧

求检查下,compile正常但是输出不了是什么情况,一直显示运行

[复制链接] |试试Instant~ |关注本帖
lsd6811298 发表于 2015-4-2 18:17:22 | 显示全部楼层 |阅读模式

[Coursera]Algorithm #1 - 2015-01-07@Princeton

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x





public class Percolation{
    private boolean[] status ;
    private int size,top,bottom;
    private WeightedQuickUnionUF uf;

    public Percolation(int N){
         if (N<=0){
        throw new IllegalArgumentException();
    }
        uf=new WeightedQuickUnionUF(N*N);
        status=new boolean[N*N];
        size=N;
        for( int i=0;i<N*N;i++){
            status[i]=false;
            for( i=0;i<N;i++){
                uf.union(i,top);
                uf.union(N*(N-1)+i,bottom);
            }
        }
    }
        private int getIndex(final int i, final int j){
            if(i<1||i>size||j<1||j>size){
                throw new IndexOutOfBoundsException();
            }
            final int index=size*(i-1)+(j-1);
            return index;
        }

        public void open (int i,int j){
            if(i<1||i>size||j<1||j>size){
                throw new IndexOutOfBoundsException();
            }
            final int index=getIndex(i,j);
            if (!status[index]){
                status[index]=true;
                if(i-2>=0){
                    int index1=size*(i-2)+(j-1);
                    if(status[index1]){
                        uf.union(index,index1);
                    }
                }
                 if(i+1<=size){
                    int index2=size*(i)+(j-1);
                    if(status[index2]){
                        uf.union(index,index2);
                    }
                }
                  if(j-2>=0){
                    int index3=size*(i-1)+(j-2);
                    if(status[index3]){
                        uf.union(index,index3);
                    }
                }
                   if(j+1<=size){
                    int index4=size*(i-1)+(j);
                    if(status[index4]){
                        uf.union(index,index4);
                    }
                }
            }
        }

        public boolean iSOPen(int i, int j){
            return status[getIndex(i,j)];
        }
        public boolean isFull(int i, int j){
            if(i<1||i>size||j<1||j>size){
                throw new IndexOutOfBoundsException();
            }
            if(uf.connected(getIndex(i,j),top)&&isOpen(i,j))
            {
                return true;
            }
            return false;
        }



        public boolean percolates() {
            if (uf.connected(top,bottom)) {
                return true;
            }
                return false;
        }

}        




















public class PercolationStats {
    private final double[] ArrResult;
    private final int num;
    public PercolationStats(int N, int T)    // perform T independent experiments on an N-by-N grid
    { ArrResult = new double[T];
        num=T;
        for(int k=0;k<num;k++){
            final Percolation p =new Percolation(N);
            int count =0;
            double prob=0;
            while(!p.percolates()){
                int i=StdRandom.uniform(1,N);
                int j=StdRandom.uniform(1,N);
                if(!p.isOpen(i,j)){
                    p.open(i,j);
                    count++;
                }
            }
            prob=(double)count/(N*N);
            StdOut.println(prob);
            ArrResult[k]=prob;
        }
    }   
        public double mean()                      // sample mean of percolation threshold
        {
            return StdStats.mean(ArrResult);
        }

        public double stddev()                    // sample standard deviation of percolation threshold
            {
                return StdStats.stddev(ArrResult);
            }


         public double confidenceLo()              // low  endpoint of 95% confidence interval
                {
                    return mean()-((1.96*stddev())/Math.sqrt(num));
                }

          public double confidenceHi()              // high endpoint of 95% confidence interval
                    {
                         return mean()+((1.96*stddev())/Math.sqrt(num));
                    }
          public static void main(String[] args)    // test client (described below)
          {
                  final PercolationStats ps=new PercolationStats(Integer.parseInt(args[0]),
                    Integer.parseInt(args[1]));
              StdOut.printf("mean  =%s\n",ps.mean());
               StdOut.printf("stddev  =%s\n",ps.stddev());
                StdOut.printf("conf interval  =%s,%s\n",ps.confidenceLo(),ps.confidenceHi());
          }





}

一剑终情 发表于 2015-4-2 23:42:48 | 显示全部楼层
本帖最后由 一剑终情 于 2015-4-2 09:45 编辑

扫了一下,两层for循环的变量都是i,不知道是不是这个问题

敢不敢多写几个print自己debug下
回复 支持 反对

使用道具 举报

 楼主| lsd6811298 发表于 2015-4-9 15:38:21 | 显示全部楼层
一剑终情 发表于 2015-4-2 23:42
扫了一下,两层for循环的变量都是i,不知道是不是这个问题

敢不敢多写几个print自己debug下

谢谢!刚开始学。。有没有什么一些需要知道的应该从一开始就该养成的好习惯?
回复 支持 反对

使用道具 举报

wwt 发表于 2015-4-9 16:17:08 | 显示全部楼层
lsd6811298 发表于 2015-4-9 15:38
谢谢!刚开始学。。有没有什么一些需要知道的应该从一开始就该养成的好习惯?

学习如何高效快速的debug
回复 支持 反对

使用道具 举报

 楼主| lsd6811298 发表于 2015-4-9 17:45:48 | 显示全部楼层
wwt 发表于 2015-4-9 16:17
学习如何高效快速的debug

对啊,写的时候吭哧吭哧写完了,一编译运行就是不成,找bug找半天
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 19:17

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表