int[][] values = {
{1,2,3,4,5},
{1,2,3,5,4},
{1,2,4,3,5},
{1,2,4,5,3},
{1,2,5,3,4},
{1,2,5,4,3},
{1,3,2,4,5},
{1,3,2,5,4},
{1,3,4,2,5},
{1,3,4,5,2},
{1,3,5,2,4},
{1,3,5,4,2},
{1,4,2,3,5},
{1,4,2,5,3},
{1,4,3,2,5},
{1,4,3,5,2},
{1,4,5,2,3},
{1,4,5,3,2},
{1,5,2,3,4},
{1,5,2,4,3},
{1,5,3,2,4},
{1,5,3,4,2},
{1,5,4,2,3},
{1,5,4,3,2},
{2,1,3,4,5},
{2,1,3,5,4},
{2,1,4,3,5},
{2,1,4,5,3},
{2,1,5,3,4},
{2,1,5,4,3},
{2,3,1,4,5},
{2,3,1,5,4},
{2,3,4,1,5},
{2,3,4,5,1},
{2,3,5,1,4},
{2,3,5,4,1},
{2,4,1,3,5},
{2,4,1,5,3},
{2,4,3,1,5}, 
{2,4,3,5,1},
{2,4,5,1,3},
{2,4,5,3,1},
{2,5,1,3,4},
{2,5,1,4,3},
{2,5,3,1,4},
{2,5,3,4,1},
{2,5,4,1,3},
{2,5,4,3,1},
{3,1,2,4,5},
{3,1,2,5,4},
{3,1,4,2,5},
{3,1,4,5,2},
{3,1,5,2,4},
{3,1,5,4,2},
{3,2,1,4,5},
{3,2,1,5,4},
{3,2,4,1,5},
{3,2,4,5,1},
{3,2,5,1,4},
{3,2,5,4,1},
{3,4,1,2,5},
{3,4,1,5,2},
{3,4,2,1,5},
{3,4,2,5,1},
{3,4,5,1,2},
{3,4,5,2,1},
{3,5,1,2,4},
{3,5,1,4,2},
{3,5,2,1,4},
{3,5,2,4,1},
{3,5,4,1,2},
{3,5,4,2,1},
{4,1,2,3,5},
{4,1,2,5,3},
{4,1,3,2,5},
{4,1,3,5,2},
{4,1,5,2,3},
{4,1,5,3,2},
{4,2,1,3,5},
{4,2,1,5,3},
{4,2,3,1,5},
{4,2,3,5,1},
{4,2,5,1,3},
{4,2,5,3,1},
{4,3,1,2,5},
{4,3,1,5,2},
{4,3,2,1,5},
{4,3,2,5,1},
{4,3,5,1,2},
{4,3,5,2,1},
{4,5,1,2,3},
{4,5,1,3,2},
{4,5,2,1,3},
{4,5,2,3,1},
{4,5,3,1,2},
{4,5,3,2,1},
{5,1,2,3,4},
{5,1,2,4,3},
{5,1,3,2,4},
{5,1,3,4,2},
{5,1,4,2,3},
{5,1,4,3,2},
{5,2,1,3,4},
{5,2,1,4,3},
{5,2,3,1,4},
{5,2,3,4,1},
{5,2,4,1,3},
{5,2,4,3,1},
{5,3,1,2,4},
{5,3,1,4,2},
{5,3,2,1,4},
{5,3,2,4,1}, 
{5,3,4,1,2},
{5,3,4,2,1},
{5,4,1,2,3},
{5,4,1,3,2},
{5,4,2,1,3},
{5,4,2,3,1},
{5,4,3,1,2},
{5,4,3,2,1}
};我希望能动态生成
而不是一个一个的写成...哪位高手试试看?分不高就有20分呵呵

解决方案 »

  1.   

    数学里面的排列问题
    到版上搜排列或者组合....很多答案。可能具有类似功能的java集合包:
    http://www.jopener.cn/category/collections-libraries/
      

  2.   

    请参考
    http://blog.csdn.net/wangjichen_1/archive/2006/10/10/1328887.aspx
    或者用下面的代码Arrange.javaimport 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;
    }
    }TryArrange.javapublic 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();
    }
    }
    }