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,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分呵呵
到版上搜排列或者组合....很多答案。可能具有类似功能的java集合包:
http://www.jopener.cn/category/collections-libraries/
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();
}
}
}