如何实现这样的数组
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分
呵呵
[解决办法]
数学里面的排列问题
到版上搜排列或者组合....很多答案。
可能具有类似功能的java集合包:
http://www.jopener.cn/category/collections-libraries/
[解决办法]
请参考
http://blog.csdn.net/wangjichen_1/archive/2006/10/10/1328887.aspx
或者用下面的代码
Arrange.java
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;
}
}
TryArrange.java
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();
}
}
}