我想提出以下類型的3個值的列表(二進制記數法!):java:如何循環,我得到正好在3列3^10(分離)值?
0;0;0
1;0;0
0;1;0
11;0;0
10;1;0
.
.
.
1111111111;0;0
0;1111111111;0
0;0;1111111111
,並在此列表中
之間所有缺失值的意思是:所有列必須有所有值(排列?),但前提是位沒有在另一列
設置,這是把10個標記的東西變成3個不同的盒子
我試過3個迴路的問題,但我總是搞砸了:( 這就是我到目前爲止有:
import java.io.FileNotFoundException;
import java.math.BigInteger;
public class create_referencevalues {
/**
* @param args
*/
public static void main(String[] args) {
Long[] list = { 10L, 40L, 90L, 160L, 250L, 350L, 500L, 650L,800L,1000L };
try {
java.io.PrintStream p = new java.io.PrintStream(
new java.io.BufferedOutputStream(
new java.io.FileOutputStream(new java.io.File(
"C:/users/djdeejay/listall.csv"), false)));
for (Integer i = 0; i < 1024; i++) {
Long sum1 = 0L;
for (Integer j = 0; j < 10; j++) {
if (BigInteger.valueOf(i).testBit(j)) {
sum1 += (list[j]);
}
}
sum1 *= Integer.bitCount(i);
Long sum2 = 0L;
for (int j = 0; j < 10; j++) {
if (BigInteger.valueOf(1023 - i).testBit(j)) {
sum2 += (list[j]);
}
}
sum2 *= 10-Integer.bitCount(i);
p.println(i +";"+ Long.toBinaryString(i)+";" + sum1+";"+ Long.toBinaryString(1023-i)+";"+sum2);
}
p.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
如何整合循環至極給了我第3行的行之間的所有排列? 感謝您的幫助
請詳細說明3列排列的含義。 –
好的,我沒有想到確切的解決方案,但我可以告訴你,使用遞歸在這裏會很方便。雖然任何遞歸代碼都可以用循環結構編寫,但如果使用遞歸實現,仍然有些解決方案更優雅。在這方面你可能會想到解決方案。 –
如果你想從一篇文章(或所有文章)中解除關聯,那麼你可以通過聯繫頁面來問這樣做:http://stackoverflow.com/contact不要只是用垃圾文字替換你的文章。 –