分小组 9名运动员参加比赛,需要分3组进行预赛。 有哪些分组的方案呢? 我们标记运动员为 A,B,C,… I 下面的程序列出了所有的分组方法。 该程序的正常输出为: ABC DEF GHI

2年前 (2019-12-27) 402次浏览 已收录 7个评论

分小组

9名运动员参加比赛,需要分3组进行预赛。
有哪些分组的方案呢?

我们标记运动员为 A,B,C,… I
下面的程序列出了所有的分组方法。

该程序的正常输出为:
ABC DEF GHI
ABC DEG FHI
ABC DEH FGI
ABC DEI FGH
ABC DFG EHI
ABC DFH EGI
ABC DFI EGH
ABC DGH EFI
ABC DGI EFH
ABC DHI EFG
ABC EFG DHI
ABC EFH DGI
ABC EFI DGH
ABC EGH DFI
ABC EGI DFH
ABC EHI DFG

… (以下省略,总共560行)。

package seven;
 
public class 分小组 {
 public static String remain(int[] a)
 {
  String s = "";
  for(int i=0; i<a.length; i++){
   if(a[i] == 0) s += (char)(i+'A');
  }	
  return s;
 }
 
 public static void f(String s, int[] a)
 {
  for(int i=0; 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 k=j+1; k<a.length; k++){
     if(a[k]==1) continue;
     a[k]=1;
     System.out.println(s+" "+(char)(i+'A')+(char)(j+'A')+(char)(k+'A')+" "+remain(a));  //填空位置
     a[k]=0;
    }
    a[j]=0;
   }
   a[i] = 0;
  }
 }
 
 public static void main(String[] args)
 {
  int[] a = new int[9];		
  a[0] = 1;
 
  for(int b=1; b<a.length; b++){
   a[b] = 1;
   for(int c=b+1; c<a.length; c++){
    a[c] = 1;
    String s = "A" + (char)(b+'A') + (char)(c+'A');
    f(s,a);
    a[c] = 0;
   }
   a[b] = 0;
  }
 }
}

 


喜欢 (0)

您必须 登录 才能发表评论!

(7)个小伙伴在吐槽
  1. 我也是学计算机的
    小蚯蚓2020-03-27 13:01
  2. 不错
    hello2020-03-27 13:26
  3. good厉害了
    沥青2020-03-27 13:52
  4. 我也是小白以后多多交流
    白云2020-03-28 16:42
  5. 我也是学计算机的
    我也是渣渣2020-03-28 17:08
  6. 给你点赞
    你好2020-03-28 17:59
  7. 记住这个网站了
    靓仔2020-05-26 10:06