2015-09-04 77 views
0

所以我求解类涉及二进制搜索,我为了解决它工作得很好,但我的预感是,鉴于问题不平衡二叉树无法正常工作。 Node.js的

的参数略有赌博会更有效的算法有问题虚构的HollyBroke,Fl城镇由一个30 x 30的方块网格组成。街道是以美国总统的名字命名的,街道的编号是数字。臭名昭着的两字纵火犯持有城镇人质。他每个星期六都会选择一所房子进行毁灭性的火灾,并通过挑战他们猜测每周犯罪的地点来嘲弄警察局。在他进行比赛之前,他在非常简短的电话会议中会回答10个猜测,并回答“是”或“否”。 (他不会留在线上,所以电话无法跟踪。) 这个城市希望你制定一个计划,当这个臭名昭着的犯罪分子提供一个快速反应。

答案是很容易创建一个算法,但我认为中位数1 /中位数+1赌博会更有效。我的预感更多的是,我会得到一个额外问题的结论,让我或者问一个关于纵火犯的二元搜索问题,或者如果游戏允许,我会在电话结束之前与警察一起出现。如果我没有彻底解决它,我会有一个非常小的空间来搜索完成后,像三个或四个块彼此相邻,

这是我的代码“赌博”二进制搜索。

`var array = [{"a":30,"b":30,"c":0}] 
function findLower(input) { 



    var half = Math.floor(input/2); 

    if(0 == input%2) 

     return (half-1); 
    else 
     return (half); 
}; 
function findUpper(input) { 
    var half = Math.floor(input/2); 

    if(input%2 == 0) 
     return (half+1); 

    else 
     return (half+1); 
} 
for (var i = 0; i <= 9; i++){ 
    for (var z = array.length - 1; z >= 0; z--) { 
     if (array[z].c = i){   
      if (array[z].a>array[z].b) 
       array.push({"a":findLower(array[z].a),"b":array[z].b,"c":array[z].c + 1},{"a":findUpper(array[z].a),"b":array[z].b,"c":array[z].c + 1}) 
      else 
       array.push({"a":array[z].a,"b":findLower(array[z].b),"c":array[z].c + 1},{"a":array[z].a,"b":findUpper(array[z].b),"c":array[z].c + 1}) 
     } 
    }; 
} 

console.log(array.length);` 

及其未来与给定的,它应该是一个荒谬数组长度2^10 + 2^9 + 2^8 = ..... 2047 的程序被想出的19683的阵列长度

而一些数组肯定不是30 * 14在节点级别10我确信算法设置正确。我用笔和纸走过了两层,似乎它应该正常工作。

回答

0

找到它。

if (array[z].c = i){ 

应该

if (array[z].c == i){ 

它不是宣布他们平等

而且我错了一个条件语句。你只有10%的成功定位房屋的几率有40%。