演算法練習--小球下落

來源:互聯網
上載者:User

標籤:改變   rac   turn   asc   script   new   練習   ret   javascrip   

小球下落: 
全然二叉樹。最大深度D。所有節點從上到下從左至右編號為1,2,3...2的D次方-1.在節點1處放一個小球。它會往下落。

每一個內節點上都由一個開關,初始所有關閉。當每次有小球落到一個開關上時,它的狀態都會改變。當小球達到一個內節點時,假設該節點上的開關關閉,往左走,否則往右走,直到遍曆到葉子節點。
問題。輸入 深度和小球個數
輸出節點編號


輸入 4 2  輸出 12
輸入 3 4  輸出 7


參考實現


function f(depth,count){var states = new Array();var r;for(var i = 0;i < count;i++){for(var root = 1;root <Math.pow(2,depth-1);){if(states[root] && states[root].open){states[root].open = false;root = root * 2 + 1;}else{if(!states[root]){states[root]={open:true};}else if(states[root].open == false){states[root].open = true;}root = root * 2;}r=root;}}return r;}console.log(f(4,2));console.log(f(3,4));console.log(f(10,1));console.log(f(2,2));console.log(f(8,128));console.log(f(16,12345));


演算法練習--小球下落

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.