组合算法

算法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//判断每个组合数中出现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//判断每个组合数中出现1的位置
       if(i<<(31-j)>>31)==-1){
            System.out.println(str[j]);//求得在数值i二进制表示法中所占位置
      }
      System.out.println("");
   }
}
}

你可能感兴趣的:(算法,算法)