nodejs 并查集

function UnionFind(row, col, idx){

var o = new Object();

o.array = new Array(row*col);

o.isRandom = new Array(row*col);

o.init = function(row, col, idx){

for (var i = 0; i < row*col; i++){

o.isRandom[i] = 0;

o.array[i] = i;

}

for (var i = 0; i < idx; i++){

var num = Math.round(Math.random()*row*col);

//console.log(num);

if (o.isRandom[num]) i--;

else {

o.isRandom[num] = 1;

if (num%row>0 && o.isRandom[num-1]) o.union(num, num-1);

if (num%row<row-1 && o.isRandom[num+1]) o.union(num, num+1);

if (num%row>0 && o.isRandom[num-row]) o.union(num, num-row);

if (num%row<col-1 && o.isRandom[num+row]) o.union(num, num+);

}

}

//console.log(uf.printArray(100,100));

};

o.root = function(i){

while (i != o.array[i]){

o.array[i] = o.array[o.array[i]];

i = o.array[i];

}

return i;

};

o.connected = function(p, q){

return o.root(p) == o.root(q);

};

o.union = function(p, q){

o.array[o.root(p)] = o.root(q);

};

o.percolation = function(row, col){

for (var i = 0; i < row; i++){

for (var j = 0; j < col; j++){

//console.log(o.printArray(20,20));

//console.log(o.connected(i, (row-1)*col+j));

if(o.connected(i, (row-1)*col+j)) return true;

}

}

return false;

};

o.printArray = function(row, col){

for (var i = 0; i < col; i++){

console.log(o.array.slice(i*row, (i+1)*row));

}

};

return o;

}

var uf = new UnionFind(100, 100, 1);

var j = 1;

//uf.init(100, 100, 1100);

//console.log(uf.printArray(100,100));

//uf.percolation(100, 100)

var sum = 0;

//console.log(uf.printArray(100,100));

for (var i = 0; i < 1000; i++){

var j = 1;

uf.init(100, 100, 1);

//console.log(uf.printArray(100, 100));

while(!uf.percolation(100, 100)){

uf.init(100, 100, j);

j = j+1;

}

sum += j;

console.log(j/10000);

}

console.log(sum/10000000);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,789评论 0 33
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,870评论 0 6
  • 分享一件你因为太过乐观导致失败或者放弃!你从中学到对于乐观最重要的一课是什么? 买车票。有一次准备坐火车去北京,本...
    咖飞的白阅读 270评论 0 0
  • 参加了100天写作小组,一周写两篇文字,群里每个人都对文字具有掌控能力,也有在我看来已经写得很好了还在虚心请教的,...
    潇潇洒洒的韩潇洒阅读 207评论 0 0
  • 突然想起来,上海周边应该也有户外俱乐部的吧,在百度上找到几个,游天涯户外的“七尖穿越”不错,40公里,轻重装均可,...
    微憧阅读 387评论 1 1