js 组合_js组合模式

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

js 组合_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;
    }

今天的文章js 组合_js组合模式分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/48938.html

(0)
编程小号编程小号
上一篇 2023-09-03 16:30
下一篇 2023-09-03 17:06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注