题目是这样的
比如有这样一个数组:{a, b, c}
要求输出这样的结果a, b, c, ab, ac, ba, bc, ca, cb, abc, acb, bac, bca, cab, cba
大侠们帮帮忙啊

解决方案 »

  1.   


    for(int first=0;first<=len;first++)
     for(int second=0;second<=len;second++)
       if(a[first]!=a[second])
        {
           string temp=string(a[first])+ string(a[second]);
           result[i]=temp;
        }大致是这样,2层循环,判断不相等后把2个值转正字符串,再拼接到一起,把结果传到结果数组result中
      

  2.   

    给段代码给楼主参考 本人是新手。。 结果倒是全部出来了,但是输出的顺序不是楼主那样。。
    我的代码不太好,很死板,很机械的代码:
    public class ex1 
    {    public static void main(String[] args) 
        {
            String [] a=new String []{"a","b","c"};
            String [] result = new String[100];
            int first,second,third,len=2,i=0;
            for(first=0;first<=len;first++)
            {
                result[i]=a[first];
                System.out.print(result[i]+" ");
                i++;
                for( second=0;second<=len;second++)
                    if(a[first]!=a[second])
                    {
                        String temp=a[first]+ a[second];
                        result[i]=temp;
                        System.out.print(result[i]+" ");
                        i++;
                        for(third=0;third<=len;third++)
                        {
                            if(a[first]!=a[second]&&a[second]!=a[third]&&a[first]!=a[third])
                            {
                                String temp1=a[first]+ a[second]+a[third];
                                result[i]=temp1;
                                System.out.print(result[i]+" ");
                                i++;
                            }
                        }
                    }
             }       
        }
    }有没有哪位大虾能给段更好的代码参考参考啊,我也学习学习
      

  3.   

    运行结果 a ab abc ac acb b ba bac bc bca c ca cab cb cba
      

  4.   

    我觉得可以用处理排列的算法来解决。对于这个题目(3元素的数组,元素个数为3),输出的结果实际上是:permutation(1,3) + permutation(2,3) + permutation(3,3)这里 permutation(r,n) 为求从 n 个元素中取 r 个的排列函数。permutation(r,n) 可以采用递归调用的算法来实现。当 r=1 的时候返回。
      

  5.   

    刚从csdn上下的有关排列组合的方法  不知道是哪位高人写的 我贴一部分  楼主在csnd上查查吗import java.math.*;
    import java.util.*;public class Arrange{ private int[] index;//用于存储需要全排列的数组的下标的成员变量。
    private int n;//表示待排数组的元素个数。
    private long numLeft;//用于存储剩余排列序列个数的成员变量。
    private long total;//用于存储排列序列总数的成员变量。

    public Arrange(int n){
    this.n=n;
    reset();//调用重置
    }

    public void reset(){
    //初始化数组index。
    index=new int[n];
    for(int i = 0; i < index.length; i++){
    index[i] = i;
    }

    //初始化numLeft,开始时numLeft应该为n!.
    total=1;
    for(int i = n;i>1;i--){
    total*=i;
    }
    numLeft=total;
    } //判断是否排序结束
    public boolean hasMore(){
    return numLeft > 0;
    }
    //得到下一个排列序列
    public int[] getNext(){ if (numLeft==total){
    numLeft -=1;
    return index;
    } int j = index.length - 2;
    while (index[j] > index[j + 1]){
    j--;
    } int k = index.length - 1;
    while (index[j] > index[k]){
    k--;
    }

    int temp;
    temp = index[k];
    index[k] = index[j];
    index[j] = temp;  int r = index.length - 1;
    int s = j + 1; while (r > s){
    temp = index[s];
    index[s] = index[r];
    index[r] = temp;
    r--;
    s++;
    } numLeft-=1;
    return index; }
    }
    下面的是测试这个方法public class TryArrange{
    public static void main(String args[]){

    System.out.println("对整数数组进行全排列");
    int[] intArray=new int[3];
    for(int i=0;i<intArray.length;i++){
    intArray[i]=i+1;
    }

    Arrange intArrange=new Arrange(intArray.length);
    while(intArrange.hasMore()){
    int[] index=intArrange.getNext();
    for(int i=0;i<intArray.length;i++){
    System.out.print(intArray[index[i]]+" ");
    }
    System.out.println();
    }

    System.out.println("对字符数组进行全排列");
    String str="abc";
    char[] chArray=str.toCharArray();

    Arrange strArrange=new Arrange(chArray.length);
    while(strArrange.hasMore()){
    int[] index=strArrange.getNext();
    for(int i=0;i<chArray.length;i++){
    System.out.print(chArray[index[i]]+" ");
    }
    System.out.println();
    }
    }
    }
    花时间帮你找地 多少给点分吗 嘿嘿
      

  6.   

    public class Test{ static TreeSet<String> add(String[] c,int len){
    TreeSet<String> ts = new TreeSet<String>();
    Random r = new Random(47);
    int total = 1;
    for(int a = c.length;a>=c.length-len;a--){
    total *= a;
    }
    while(total > 0){
    String s = new String();
    for(int i = len;i>=0;i--){
    do{
    int k = r.nextInt(c.length);
    if(!s.contains(c[k])){
    s += c[k];
    break;
    }
    }while(true);
    }
    if(!ts.contains(s)){
    ts.add(s);
    total --;
    }
    }
    return ts;
    }
    public static void main(String [] arg){
    String[] c= {"a","b","c"};
    int len = c.length;
    for(int i = 0; i<len;i++){
    TreeSet<String> treeSet = add(c,i);
    for(String st:treeSet){
    if(i!=len-1 || st!=treeSet.last()){
    System.out.print(st+",");
    }else{
    System.out.print(st);
    }
    }
    }
    }
    }
    数组元素个数不限(要求不同的元素,否则..)...:-)