[英]Javascript: printing all possible permutations to get sum
我正在嘗試運行一段代碼,但被卡住了。 我有一個數組大小var sizes = [1,2];
我有一個長度要達到len = 3;
。 我想使用給定的尺寸(即[1,1,1],[2,1],[1,2])打印達到此長度的所有可能性。
到目前為止,我已經嘗試過了:
var sizes = [1,2]; // possible sizes to pick
var start_len = 3; // length I want to reach
var arr = [];
var main = function(len){
if(len == 0){arr = [];} //clear the array after I got to full length
if(len >= 1){ // try adding 1
B(1,len, arr);
}
if(len >= 2){ // try adding 2
B(2,len, arr);
}
}
var add_and_call_again= function(elem, len, arr){
arr.push(elem);
if(len-elem == 0){ // if got to full length
console.log(arr);
}
main(len-elem); // add next element with less length to fill
}
main(start_len);
我得到的是[1,1,1]和[2,1],還有[2]-不知道出了什么問題。 提前致謝。
編輯:我的問題顯示了我的代碼,但我想了解的是為此的偽代碼。 我缺少了什么,我也不知道
遞歸深度優先搜索是此類任務的最佳選擇。 通用代碼(任何大小,任何目標):
var sizes = [1, 2]; // possible sizes to pick
var start_len = 3;
function dfs(current_len, path){
var res = [];
sizes.forEach(function(s){
var temp_res;
if (s==current_len)
res.push(path.concat([s]));
else if (s<current_len)
temp_res = dfs(current_len-s, path.concat([s]));
if (temp_res)
res = res.concat(temp_res);
});
if (res.length)
return res;
}
var paths = dfs(start_len, []);
console.log(paths);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.