zoukankan      html  css  js  c++  java
  • 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.栈的可以实现字符串的组合排序,那么必然也可以实现数字,字符等的排序。




    学无止境,耐心学习。
  • 相关阅读:
    【英语】Bingo口语笔记(40)
    【英语】Bingo口语笔记(38)
    【Python系统学习】基础篇
    【英语】Bingo口语笔记(37)
    [转]linux下ulimit命令详解
    【转】linux read 用法
    【转】Linux下使用locale命令设置语言环境
    【转】基于linux下的变量声明declare的用法
    [转]Linux中set,env和export这三个命令的区别
    linux下echo命令详解(转)
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15049131.html
Copyright © 2011-2022 走看看