• java-无重复的排列组合小技能


    测试工作中,或多或少的会遇到很多字段,需要从中取出特定的个数组合的情况,这时候排列组合就能很好的起到提高效率的作用。

    下面我们一起来看看代码的实现过程:

    package com.practice_03;
    
    
    import java.util.Stack;
    
    public class Book_See {
         //分配一个栈实例
        public static Stack<String> stack = new Stack<String>();
        //统计有多少中组合方式
       static int count = 0;
        public static void main(String[] args) {
            String persons[] = {"小红","小明","小黑","小绿","小蓝","小晨"};
     
            combine(persons,3,0,0); //从6个人中选择3个组合,不能出现重复组合,有多少中组合方式
            System.out.println("总的无重复组合方式有"+count+"种");
    
        }
         
        /**
         * @param persons  所有参与的人
         * @param target   设定组合人数大小,例如:3个人组合 2个人组合
         * @param num      当前栈内有多少个元素
         * @param index    当前数组对应的下标
         *
         */
        private static void combine(String[] persons, int target, int num, int index) {
            //如果栈内元素个数等于设定的组合个数,打印组合,并计数
            if(num == target) {
                System.out.println(stack);
                count = count+1;
                return;
            }
           
            for(int i=index;i<persons.length;i++) {
                //判断栈内是否已经存在元素
                if(!stack.contains(persons[i])) {
                    stack.add(persons[i]);
                    combine(persons, target, num+1, i);
                    stack.pop();
                }
            }
        }
    }

    代码执行输出结果展示如下:

    [小红, 小明, 小黑]
    [小红, 小明, 小绿]
    [小红, 小明, 小蓝]
    [小红, 小明, 小晨]
    [小红, 小黑, 小绿]
    [小红, 小黑, 小蓝]
    [小红, 小黑, 小晨]
    [小红, 小绿, 小蓝]
    [小红, 小绿, 小晨]
    [小红, 小蓝, 小晨]
    [小明, 小黑, 小绿]
    [小明, 小黑, 小蓝]
    [小明, 小黑, 小晨]
    [小明, 小绿, 小蓝]
    [小明, 小绿, 小晨]
    [小明, 小蓝, 小晨]
    [小黑, 小绿, 小蓝]
    [小黑, 小绿, 小晨]
    [小黑, 小蓝, 小晨]
    [小绿, 小蓝, 小晨]
    总的无重复组合方式有20种

    总结:

    1.target设置越大,组合的种类越少;
    2.栈的可以实现字符串的组合排序,那么必然也可以实现数字,字符等的排序。




    学无止境,耐心学习。
  • 相关阅读:
    一组网页边栏过渡动画,创意无限!【附源码下载】
    sql查询比较两表不同数据与相同数据
    Sql中的并(UNION)、交(INTERSECT)、差(minus)、除去(EXCEPT)详解
    防盗链基本原理(web安全测试实例二)
    篡改请求数据 或响应数据(web安全测试 实例三)
    【转】思维导图编写测试用例的两种格式
    【转】流媒体与直播技术
    Jmeter接口测试 不同的content-type传入参数方式(一)
    md5算法的java实现
    sql server 2008导出数据至Excel或者wps
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15049131.html
Copyright © 2020-2023  润新知