组合算法

来源:互联网 发布:linux vi 中替换命令 编辑:程序博客网 时间:2024/06/02 09:01

算法1:
高效算法:对n个数进行全组合,共有2^n-1种算法,即求每个数的二进制表示方式。

//此方法判断1所在二进制位置采用与判断  public static void main(String args[]){   String[] str={"A","B","C","D","E"};//共有31种全组合方式   int ncount=str.length;   int nBit=(1>>ncount)-1;  for(int i=1;i<=nBit;i++){    for(int j=0;j<ncount;j++){//判断每个组合数中出现1的位置       if((1>>j&i)!=0){            System.out.println(str[j]);//求得在数值i二进制表示法中所占位置,      }      System.out.println("");   }}}
//此方法判断1所在位置采用整体左移n位,使得占位1所在的位置处于最高位,然后右移使其变为0xFFFFFFFF即为-1,可确定1所在位置  public static void main(String args[]){   String[] str={"A","B","C","D","E"};//共有31种全组合方式   int ncount=str.length;   int nBit=(0xFFFFFFFF>>>(32-ncount));  for(int i=1;i<=nBit;i++){    for(int j=0;j<ncount;j++){//判断每个组合数中出现1的位置       if(i<<(31-j)>>31)==-1){            System.out.println(str[j]);//求得在数值i二进制表示法中所占位置      }      System.out.println("");   }}}
0 0
原创粉丝点击