zoukankan      html  css  js  c++  java
  • [递归算法]组合

    个人认为是最简单的算法设计了,核心算法如下:

    public void comb(char[] list,int index, int number,int[] keys){

      if(number==0){

        for(int i=0;i<keys.length;i++)
        System.out.print(list[keys[i]]);

       System.out.println();
      return;
    }


       for(;index<=list.length-number;index++){
        keys[keys.length-number]=index;
        comb(list,index+1,number-1,keys);
      }
    }

    list是需要组合的list,index是每一层指向list的索引,number是需要抽取的数量,keys是索引表

    很好懂,去掉对keys索引表的操作的话和打印操作的话,算法就3行:

    public void comb(char[] list,int index, int number){
      if(number==0) return;

      for(;index<=list.length-number;index++)
        comb(list,index+1,number-1,keys);
    }

    使用如下:

    public static void main(String[] args){
      char[] b={'a','b','c','d','e'};
      int[] keys=new int[3];
      comb(b, 0, 3,keys);
    }

  • 相关阅读:
    koa2环境搭建
    单例模式
    nodejs fs path
    path node
    webpack code splitting
    babel 插件编写
    C#验证码类
    C#身份证识别相关技术
    C# Socket服务端与客户端通信(包含大文件的断点传输)
    动态抓取网页信息
  • 原文地址:https://www.cnblogs.com/imakoo/p/3197155.html
Copyright © 2011-2022 走看看