Programming Assignment 1: Percolation代码
来源:互联网 发布:苹果笔记本保护壳 知乎 编辑:程序博客网 时间:2024/05/20 09:10
算法第一部分
Algorithms, Part Iby Kevin Wayne, Robert SedgewickPrinceton University
Week1——编程作业1:Percolation 完整代码
Percolation.java
public class Percolation {private boolean[] NN;private int N;private WeightedQuickUnionUF WQUF;private WeightedQuickUnionUF WQUFBack;public Percolation(int N){this.N = N;NN = new boolean[N*N];WQUF = new WeightedQuickUnionUF(N*N + 4);WQUFBack = new WeightedQuickUnionUF(N*N + 1);for(int i=0;i<N;i++){for(int j=0;j<N;j++){NN[i*N+j]=false;}}}public void open(int i,int j){if(i<1 || i>N || j<1 || j>N){throw new java.lang.IndexOutOfBoundsException();}int ii = i - 1;int jj = j - 1;if(NN[ii * N + jj] ){return;}NN[ii * N + jj]=true;//the first lineif(i==1){WQUF.union(ii*N+jj,N*N);WQUFBack.union(ii*N+jj,N*N);}//the last lineif(i==N){WQUF.union(ii*N+jj,N*N+1);}//upif((ii-1)>=0 && NN[(ii-1)*N+jj]){WQUF.union(ii*N+jj,(ii-1)*N+jj);WQUFBack.union(ii*N+jj,(ii-1)*N+jj);}//leftif((jj-1)>=0 && NN[ii*N+(jj-1)]){WQUF.union(ii*N+jj,ii*N+(jj-1));WQUFBack.union(ii*N+jj,ii*N+(jj-1));}//belowif((ii+1)<N && NN[(ii+1)*N+jj]){WQUF.union(ii*N+jj,(ii+1)*N+jj);WQUFBack.union(ii*N+jj,(ii+1)*N+jj);}//rightif((jj+1)<N && NN[ii*N+(jj+1)]){WQUF.union(ii*N+jj,ii*N+(jj+1));WQUFBack.union(ii*N+jj,ii*N+(jj+1));}}public boolean isOpen(int i,int j){if(i<1 || i>N || j<1 || j>N){throw new java.lang.IndexOutOfBoundsException();}return NN[(i-1)*N+(j-1)];}public boolean isFull(int i,int j){if(i<1 || i>N || j<1 || j>N){throw new java.lang.IndexOutOfBoundsException();}return NN[(i-1)*N+(j-1)] && WQUFBack.connected((i-1)*N+(j-1),N*N);}public boolean percolates(){return WQUF.connected(N*N,N*N+1);}}
PercolationStats .java
public class PercolationStats {private double mean;private double stddev;private double confLow;private double confUp;public PercolationStats(int N,int T){if(N <= 0 || T <= 0){throw new java.lang.IllegalArgumentException();}double times[] = new double[T];for(int t=0;t<T;t++){Percolation perc = new Percolation(N);for(int a=0;a<N*N;a++){int pt = (int) (Math.random() * N * N);int i = pt / N + 1;int j = pt % N + 1;while(perc.isOpen(i, j)){pt = (int) (Math.random() * N * N);i = pt / N + 1;j = pt % N + 1;}perc.open(i, j);if(perc.percolates()){times[t] = ((double) a) / (N *N);break;}}}for (int t = 0; t < T; t++)mean += times[t];mean /= T;for (int t = 0; t < T; t++)stddev += (times[t] - mean) * (times[t] - mean);stddev /= (T - 1);stddev = Math.sqrt(stddev);confLow = mean - 1.96 * stddev / Math.sqrt((double)T);confUp = mean + 1.96 * stddev / Math.sqrt((double)T);}public double mean(){return mean;}public double stddev(){return stddev;}public double confidenceLo(){return confLow;}public double confidenceHi(){return confUp;}public static void main(String[] args){int N = StdIn.readInt();int T = StdIn.readInt();PercolationStats pers = new PercolationStats(N,T);StdOut.println("mean=" + pers.mean());StdOut.println("stddev=" + pers.stddev());StdOut.println("95% confidence interval=" + pers.confidenceLo() + ", " + pers.confidenceHi());}}
0 0
- Programming Assignment 1: Percolation代码
- Programming Assignment 1: Percolation代码
- Programming Assignment 1: Percolation
- coursera算法课 Programming Assignment 1:Percolation
- Coursera Algorithms Programming Assignment 1: Percolation
- Programming Assignment: Percolation
- Coursera Algorithm class programming assignment 1——Percolation
- 代码percolation
- R Programming Assignment 1
- Programming assignment 1 testing case
- Introduction to Recommender Systems-Programming Assignment 1
- Coursera_Stanford密码学公开课 Programming Assignment 1
- Programming Assignment 2: Randomized Queues and Deques代码
- Programming Assignment: Collinear Points
- Stanford - Cryptography I - Week 1-1 Programming Assignment
- CILP Programming Concepts – Assignment 1 and 2
- Stanford - Cryptography I - Week 1-2 Programming Assignment
- Algorithms: Design and Analysis, Part 1, Programming Assignment #5
- 光流法与opencv实现
- 我与传智播客的不解之缘
- 学习随笔
- ios app打包ipa
- 十年学会编程
- Programming Assignment 1: Percolation代码
- OpenCV常用操作的代码
- 天天写日记争当文艺青年 2014-5-13
- C语言实现句子里的单词倒叙输出
- c_语法入门_day5
- mount命令
- java 向Excel中添加数据
- Map.Entry
- OpenStack_Swift源码分析——Ring基本原理及一致性Hash算法