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);
    }

  • 相关阅读:
    zabbix4.4安装和简要设置
    SAMBA服务
    NFS服务
    Rsync+inotify数据同步
    Linux上FTP部署:基于mariadb管理虚拟用户
    rsyslog日志服务部署
    Typora自动生成标题编号
    编译安装LAMP
    303. 区域和检索
    [leetcode]53. 最大子序和*
  • 原文地址:https://www.cnblogs.com/imakoo/p/3197155.html
Copyright © 2011-2022 走看看