2012-11-27 5 views
2

답장을 보내 주셔서 감사합니다. 저를 도와 주심에 감사 드리며, 소수의 웹 사이트에도 아무 도움을주지 않으려 고합니다.순열이 코드에 도움이 필요합니다.

제 코드의 경우 순열 수를 입력하고 싶습니다.

가 바닥
1,2,3
1,2,3
1,2,3

output to 
111 = 1 
112 = 1 
113 = 1 
121 = 1 
122 = 1 
123 = 1 
133 = 1 
211 = 1 
212 = 1 
213 = 1 
333 = 1 

위쪽에서 계산 모든 숫자가 카운트까지 계속 또한에 저장합니다 결국 얼마나 많은 수를 확인할 수있는 배열

코드는 입력 번호를 확인하고 얼마나 많은 결과가 나오는지 계산하고 얼마나 많은 결과와 각 결과가 순열 수 후에 얼마나 많은지를 보여줍니다.

힘든 일?.

어쨌든 도움에 감사드립니다.

답변

1

그리 어렵지 않습니다. 그것은 단지 표준 순열의 것입니다. 단순히 결과의 길이를 얻을 Math.pow(size, size)이 될 것입니다, 당신은 그 길이 만 관심이 있다면 결과를 생성 할 필요없이, 그러나

function permute(size) { 
    var range = getRange(size); 
    var result = []; 
    getSubPerms('', range, result); 
    return result; 
}; 

function getRange(size) { 
    var range = []; 
    for (var i = 0; i < size; i++) { 
     range.push(i + 1); 
    } 
    return range; 
} 

function getSubPerms(perm, range, result) { 
    for (var i = 0; i < range.length; i++) { 
     var perm2 = perm + range[i]; 
     if (perm2.length == range.length) { 
      result.push(perm2); 
     } else { 
      getSubPerms(perm2, range, result); 
     } 
    } 
} 

var foo = permute(4); //an array of all of your results. 
alert(foo.length); //256 

: 당신은 약간의 재귀를 사용해야합니다 .

관련 문제