zoukankan      html  css  js  c++  java
  • 排列组合算法的javascript实现

    从成员数为N的集合S中,选出M个元素,分别求其排列与组合结果集,即 A(N, M)与C(N, M)

    function queue(arr, size){
      if(size > arr.length){ return;}
      var allResult = [];
    
      (function(arr, size, result){
        if(result.length == size){
          allResult.push(result);
        }else{
          for(var i =0 ,len = arr.length;i < len; i++){
            var newArr = [].concat(arr),
                curItem = newArr.splice(i,1);
            arguments.callee(newArr, size, [].concat(result,curItem));
          }
        }
      })(arr, size, []);
    
      return allResult;
    }
    
    
    function choose(arr, size ){
      var allResult = [];
    
      (function(arr, size, result){
        var arrLen = arr.length;
        if(size > arrLen){
          return;
        }
        if(size == arrLen){
          allResult.push([].concat(result, arr))
        }else{
          for(var i =0 ; i < arrLen; i++){
            var newResult = [].concat(result);
            newResult.push(arr[i]);
    
            if(size == 1){
              allResult.push(newResult);
            }else{
              var newArr = [].concat(arr);
              newArr.splice(0, i + 1);
              arguments.callee(newArr, size - 1, newResult);
            }
          }
        }
      })(arr, size, []);
    
      return allResult;
    }
    
    function showResult(result){
      console.log('The number of result sets: ' + result.length );
      for(var i=0 , len = result.length;i < len; i++){
        console.log(result[i]);
      }
    }
    
    
    var arr = ['姬光','王子', '三桂','科长'];
    
    showResult(choose(arr, 4));
    showResult(queue(arr, 4));

    原文链接

  • 相关阅读:
    服务器上往Mongo导入json文件里的数据
    在Flask蓝图中使用动态URL前缀
    python 的 optparser库
    lowB 三人组
    Linux基础介绍
    html的q标签、blockquote标签
    单冒号伪元素和双冒号伪元素
    CSS中的伪元素选择器
    CSS中的选择器
    CSS中的关系选择器
  • 原文地址:https://www.cnblogs.com/ring1992/p/9233533.html
Copyright © 2011-2022 走看看