알고리즘 연습 - 작은 공의 낙하

931 단어 알고리즘
작은 공 낙하: 완전 이 진 트 리, 최대 깊이 D.모든 노드 가 위 에서 아래로 왼쪽 에서 오른쪽으로 번호 가 1, 2, 3... 2 인 D 제곱 - 1. 노드 1 에 작은 공 을 놓 으 면 아래로 떨어진다.모든 내부 노드 는 하나의 스위치 로 초기 에 모두 닫 히 고 작은 공이 하나의 스위치 에 떨 어 질 때마다 그의 상 태 는 달라 집 니 다.작은 공이 한 내부 노드 에 도 달 했 을 때 이 노드 의 스위치 가 닫 히 면 왼쪽으로 가세 요. 그렇지 않 으 면 잎 노드 에 옮 겨 다 닐 때 까지 오른쪽으로 가세 요.문제, 입력 깊이 와 작은 공 개수 출력 노드 번호 입력 42 출력 12 입력 34 출력 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));

좋은 웹페이지 즐겨찾기