问题:
分小组
9名运动员参加比赛,需要分3组进行预赛。
有哪些分组的方案呢?
我们标记运动员为 A,B,C,... I
下面的程序列出了所有的分组方法。
该程序的正常输出为:
ABC DEF GHI
ABC DEG FHI
ABC DEH FGI
ABC DEI FGH
ABC DFG EHI
ABC DFH EGI
代码:
public class Group {
private static int count;
public static void main(String[] args) {
int[] a = new int[9];
a[0] = 1;
for (int i = 1; i < a.length; i++) {
a[i] = 1;
for (int j = i+1; j < a.length; j++) {
a[j] = 1;
secondGroup("A"+(char)(i+'A')+(char)(j+'A'),a);
a[j] = 0;
}
a[i] = 0;
}
}
private static void secondGroup(String s, int[] a) {
for (int i = 1; i < a.length; i++) {
if (a[i]==1) {
continue;
}
a[i] = 1;
for (int j = i+1; j < a.length; j++) {
if (a[j]==1) {
continue;
}
a[j] = 1;
for (int j2 = j+1; j2 < a.length; j2++) {
if (a[j2]==1) {
continue;
}
a[j2] = 1;
thirdGroup(s+(char)(i+'A')+(char)(j+'A')+(char)(j2+'A'),a);
a[j2] = 0;
}
a[j] = 0;
}
a[i] = 0;
}
}
private static void thirdGroup(String s, int[] a) {
for (int i = 1; i < a.length; i++) {
if (a[i]==0) {
s += (char)(i+'A');
}
}
System.out.println(s);
}
}