borland 写道
jahu 写道
public void test(){ int[] inSize = new int[in.length] , inValue = new int[in.length]; int listSize =1 ,s = 0, sizeValue = 0; for(int i = 0 ; i < in.length ; i ++){ inValue[i] = in[i][0]; s = in[i].length; listSize= listSize*s; inSize[i] = s-1; } s = in.length-1; int i = s , j=0, yu= 0; ArrayList<String> list = new ArrayList<>(listSize); System.out.println("循环次数 : " + listSize) ; list.add(arrayToString(inValue)); int forNumber = 1; for( ; ; ){ if(listSize == forNumber) break; j = forNumber; i = s; for( ; ; ){ sizeValue = inSize[i]; if(j > sizeValue){ yu = j%sizeValue; j = j/sizeValue; inValue[i] = in[i][yu]; i--; }else{ inValue[i] = in[i][j]; break; } } list.add(arrayToString(inValue)); forNumber++; } System.out.println("循环次数 : " + forNumber); System.out.println("list的大小 :" + list.size()) ; System.out.println(list.toString()) ; }
我的计算方式,
你的代码有个问题,当N和数组都比较大的时候listSize会溢出!
我可以进行分割,,也可以进行优化。