zoukankan      html  css  js  c++  java
  • js 组合

     /***
        alist :原来的要排练的数组,n组合的个数
        */
        function getCom(aList, n) {
            var a = []; //新的组合数组
            var count = 0;
            var m = aList.length;
            var flags = [];
            /*初始化*/
            for (var i = 0; i < n; i++) {
                flags[i] = 1;
            }
            for (var i = n; i < m; i++) {
                flags[i] = 0;
            }

            /*第一个组合数*/
            var tempA = [];
            for (var i = 0; i < flags.length; i++) {
                if (flags[i] == 1) {
                    tempA.push(aList[i]);
                }

            }

            a.push(tempA.toString());
            count = 1;
            var has10 = false; //是否有"10"组合的标志:true-有;false-无
            var bound = 0; //第一个"10"组合的索引
            var num1 = 0;           //"10"组合左边的"1"的个数
            var j;

            while (true) {
                num1 = 0;
                has10 = false;
                for (var i = 0; i < m - 1; i++) {
                    if (flags[i] == 1 && flags[i + 1] == 0)//找到第一个"10"组合
                    {

                        bound = i;
                        flags[i] = 0; //将该"10"组合变为"01"组合
                        flags[i + 1] = 1;
                        for (j = 0; j < num1; j++)//将其左边的所有"1"全部移动到数组的最左端
                        {
                            flags[j] = 1;
                        }

                        for (j = num1; j < bound; j++) {
                            flags[j] = 0;
                        }
                        has10 = true;
                        break;

                    }

                    else if (flags[i] == 1) {
                        num1++;
                    }
                }
                if (has10 == false)//没有"10"组合了,代表组合计算完毕
                {
                    break;
                }
                else {
                    count++;
                }

                /*第count个组合数*/
                tempA = [];
                for (var i = 0; i < flags.length; i++) {
                    if (flags[i] == 1) {
                        tempA.push(aList[i]);
                    }
                }
                a.push(tempA.toString());

            }
            return a;
        }

  • 相关阅读:
    Mithril – 构建杰出 Web 应用的 JS MVC 框架
    构建 iOS 风格移动 Web 应用程序的8款开发框架
    优秀设计:纹理在网页设计中的20个应用示例
    HTML5 Dashboard – 那些让你激动的 Web 技术
    免费下载!10套流行的扁平化界面设计素材
    另类网页设计:30个复古怀旧风格的网站作品
    2014年3月新鲜出炉的最佳 JavaScript 工具库
    25个最佳的 WordPress Gallery 画廊插件
    Gremlins.js – 模拟用户随机操作的 JS 测试库
    15款提高工作效率的 Web 项目管理工具
  • 原文地址:https://www.cnblogs.com/luluping/p/1498662.html
Copyright © 2011-2022 走看看