首页 > 其他 > 详细

全排列与全组合

时间:2018-03-18 22:21:34      阅读:178      评论:0      收藏:0      [点我收藏+]

//全排列
var arr = ["a", "b", "c", "d"];
//实现全排列
function AllPermuAndCombi(arr,length){
        var Allresult=[];
           for(var i=1;i<=length;i++){
             Allresult=Allresult.concat(mainFunction(arr,i));

}
     return Allresult;
}
function mainFunction(Arr, num) {
         var resultArr = [],
            resultNum = 0,
                     iNow = 1;
              if(num == 1) {
               return Arr;
                }
        function PermuAndCombina(arr, iNow, str) {

                 for(var i = 0; i < arr.length; i++) {
                        var result = arr.concat();
                        var strClone = str;
                        strClone += result.splice(i, 1);
                         if(iNow == num) {
                             resultNum += result.length;
                              for(var j = 0; j < result.length; j++) {
                                        resultArr.push(strClone + result[j]);
                                }
                          } else {
                               PermuAndCombina(result,iNow+1, strClone);
                          }
                 }

       }
//组合,涉及的是数组去重
function unique(arr){
      for (var i=0;i<arr.length;i++) {
            arr[i]=arr[i].split("").sort().join("");
        }
       var result=[];
        var obj={};
      for (var i = 0; i < arrength; i++) {
             if (!obj[arr[i]]) {
                    result.push(arr[i]);
                      obj[arr[i]]=1;
                 }
        }

      return result;
}
       PermuAndCombina(Arr,iNow+1, "");
// resultArr.push(resultNum);
//resultArr=unique(resultArr)
         return resultArr;
}
console.log(mainFunction(arr,2));
console.log(AllPermuAndCombi(arr,3));
//组合
var Arr_un=[1,5,3,1,7,3];
//数组去重
function Array_unique(Arr){
var result=[];
var Obj={};
for (var i=0;i<Arr.length;i++) {
if (!Obj[Arr[i]]) {
result.push(Arr[i]);
Obj[Arr[i]]=1;
}
}
return result;
}
console.log(Array_unique(Arr_un));

全排列与全组合

原文:https://www.cnblogs.com/laiso/p/8597686.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!