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

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

    js解法:

     1 function queue(arr, size){
     2   if(size > arr.length){ return;}
     3   var allResult = [];
     4 
     5   (function(arr, size, result){
     6     if(result.length == size){
     7       allResult.push(result);
     8     }else{
     9       for(var i =0 ,len = arr.length;i < len; i++){
    10         var newArr = [].concat(arr),
    11             curItem = newArr.splice(i,1);
    12         arguments.callee(newArr, size, [].concat(result,curItem));
    13       }
    14     }
    15   })(arr, size, []);
    16 
    17   return allResult;
    18 }
    19 
    20 
    21 function choose(arr, size ){
    22   var allResult = [];
    23 
    24   (function(arr, size, result){
    25     var arrLen = arr.length;
    26     if(size > arrLen){
    27       return;
    28     }
    29     if(size == arrLen){
    30       allResult.push([].concat(result, arr))
    31     }else{
    32       for(var i =0 ; i < arrLen; i++){
    33         var newResult = [].concat(result);
    34         newResult.push(arr[i]);
    35 
    36         if(size == 1){
    37           allResult.push(newResult);
    38         }else{
    39           var newArr = [].concat(arr);
    40           newArr.splice(0, i + 1);
    41           arguments.callee(newArr, size - 1, newResult);
    42         }
    43       }
    44     }
    45   })(arr, size, []);
    46 
    47   return allResult;
    48 }
    49 
    50 function showResult(result){
    51   console.log('The number of result sets: ' + result.length );
    52   for(var i=0 , len = result.length;i < len; i++){
    53     console.log(result[i]);
    54   }
    55 }
    56 
    57 
    58 var arr = ['姬光','王子', '三桂','科长'];
    59 
    60 showResult(choose(arr, 4));
    61 showResult(queue(arr, 4));

    个人原创,如有漏洞或建议,请留言。

  • 相关阅读:
    排序之快速排序
    希尔排序
    大数据的乘法
    大数据的乘法实现——C语言
    js函数纪实
    【转】js中$含义及用法
    python基础操作
    git 常用指令
    Django框架学习记录
    【转】Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
  • 原文地址:https://www.cnblogs.com/kaiye/p/3606373.html
Copyright © 2011-2022 走看看