给定若干字符,例如a,b,c,d,e,f,g;怎样输出给定字符的所有不同排列?

解决方案 »

  1.   


    import java.util.ArrayList;   
    import java.util.Arrays;   
    import java.util.List;   
    import java.util.Scanner;
    public class FullSort {   
        //将NUM设置为待排列数组的长度即实现全排列   
        private static int NUM = 0;   
      
        /**  
         * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列  
         *  
         * @param datas  
         * @param target  
         */  
     
        private static void sort(List datas, List target) {   
            if (target.size() == NUM) {   
                for (Object obj : target)   
                    System.out.print(obj);   
                System.out.println();   
                return;   
            }   
            for (int i = 0; i < datas.size(); i++) {   
                List newDatas = new ArrayList(datas);   
                List newTarget = new ArrayList(target);   
                newTarget.add(newDatas.get(i));   
                newDatas.remove(i);   
                sort(newDatas, newTarget);   
            }   
        }   
      
        public static void main(String[] args) {   
            Scanner input = new Scanner(System.in);
            System.out.println("请输入X个字符,用逗号分割:");
            String str = input.nextLine();
            String[] datas = str.split(",");   
            NUM = datas.length;
            sort(Arrays.asList(datas), new ArrayList());   
        }   
      
    }  
      

  2.   


    //这样比较简单,经测试没问题!
    import java.util.Scanner;
    public class FullSort {
    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("请输入字符,并用,号隔开!");
    String str = input.nextLine();
    String[] strList = str.split(","); for (int i = 0; i < strList.length; i++) {
    for (int j = i+1; j < strList.length; j++) {
    String s = strList[i]+strList[j];
    System.out.print(s+"、");
    }
    }
    }
    }
    测试结果:
    请输入字符,并用,号隔开!
    a,b,c,d,
    ab、ac、ad、bc、bd、cd、
      

  3.   


    public class test {
    public static void main(String[] args) {
    String str[] = { "a", "b", "c", "d", "e", "f", "g" };
    int x = str.length;
    int y = 1 << x;
    for (int i = 1; i <= y; i++) {
    for (int j = 0; j < x; j++) {
    int z = 1 << j;
    if ((z & i) != 0) {
    System.out.print(str[j]);
    }
    }
    System.out.println("");
    }
    }
    }