n01jlb0914 2008-10-16 23:57
浏览 175
已采纳

朋友问我一问题,我答不上哈哈 大家一起探讨下

6个大于等于1 小于等于33的不同数字为一组,这一组的数字之和必须为120

用java代码实现输出这样的数字组合

  • 写回答

6条回答 默认 最新

  • hunterli0408 2008-10-17 11:03
    关注

    package test;

    public class Test {

    public static void main(String[] args) {

      //构造数组
      int[] numbers = new int[33];
      for (int i = 0; i < 33; i++) {
         numbers[i] = i + 1;
      }
    
      //记录匹配的组合总数
      int count = 0;
      //6层循环,每层取一个数
      for (int n1 : numbers) {
         for (int n2 : numbers) {
            for (int n3 : numbers) {
               for (int n4 : numbers) {
                  for (int n5 : numbers) {
                     for (int n6 : numbers) {
                        //判断6数之和是否为120
                        if ((n1 + n2 + n3 + n4 + n5 + n6) == 120) {
                           //判断这6个数是否是升序排列
                           if ((n2 > n1) && (n3 > n2) && (n4 > n3)
                                 && (n5 > n4) && (n6 > n5)) {
                              //输出
                              System.out.println(n1 + ", " + n2
                                    + ", " + n3 + ", " + n4 + ", "
                                    + n5 + ", " + n6);
                              count++;
                           }
                        }
                     }
                  }
               }
            }
         }
      }
    
      //输出匹配的排列总数
      System.out.println("\n" + count);
    

    }
    }

    这是用上面所说的“最土”的六层循环的实现版本,逻辑不太复杂,不知有没有Bug,最后一共输出14565条记录。如下:

    ...

    16, 18, 20, 21, 22, 23
    17, 18, 19, 20, 21, 25
    17, 18, 19, 20, 22, 24
    17, 18, 19, 21, 22, 23

    14565

    不过,即使这种方法,也还是有很多可以改进的地方,可明显提高效率。比如,判断语句提前,每层一判断;限制第一层的取值上限,等等。当然,如果哪位能够给出数学上更加合理的指导的话,对于编程会有更大的帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办