.如题,请问如何遍历一个二维数组的所有组合?
如:
* A B C D
1 0.2 0.3 0.4 0.5
2 0.3 0.4 0.2 0.5
3 0.5 0.2 0.9 0.1
... ..... ..... ..... .....
这样一个二维数组,想要遍历这个数组的所有组合,就比如:
AB,AC,AD,BC,BD,CD
ABC,ABD,BCD
ABCD
然后二维数组的大小是不确定的。
遍历过程是: 目前A B,然后竖着遍历A B column底下所有的数据。
请问各位大神们,有什么好的方法吗?
目前的想法:
1.首先因为数组大小不确定,for loop肯定是不行的
2. 其次我尝试了各种组合的方法,发现各种组合的算法是对应每次的输入进行组合,也就是第二行的组合结果跟第一行的不是一一对应的
* 目前暂时没有code,想理清一下思路,找到好久没找到好的解决办法
在此先谢谢各位了:)
这是数学中的组合问题吧。
AB,AC,AD,BC,BD,CD不是Cn2。可以用
for(int i =0;i< length;i++){ for(int j =i+1;i< length;i++){ .. } }
byte size = 1; long allocateMemory = UNSAFE.allocateMemory(size); UNSAFE.putAddress(allocateMemory, value); long readValue = UNSAFE.getAddress(allocateMemory);
public class Combination { //还不熟悉,所以再重发一下。 public static void main(String[] args){ String[] arr={"A","B","C","D"}; getTwoDimensionArray(arr); } public static String[][] getTwoDimensionArray(String[] arr) { } public static String[] getCombination(String[] arr, int n){ /**从一个一维数组中取得n个元素所构成的组合*/ //这里采取类似选择排序的for循环方式 //这里还要采用递归的算法getCombination(n,arr)要利用getCombination(n-1,arr);n>=2; /*if(n>=2){ * for(int j=0;j<getCombination(n,arr).length;j++){ for(int i=0;i<getCombination(n-1,arr).length;i++){ getCombination(n,arr)[j]=CurrentValue+getCombination(n-1,arr)[i];} } } } if(n=1){ for(int i=0;i<arr.length;i++){ getCombination(1,arr)[i]=arr[i]; }}*/ //其中arr要调用arr.substring(n-1,length); String CurrentValue; int CurrentIndex; //StringBuilder ss=new StringBuilder(); } /*public static int getLength(String[] arr,int n){ //计算从一个一维数组中取得n个元素所构成的组合的个数 * 这个方法存在必要性未知 }*/}