从1至33中任意取6个数,使他们的合等于某一值比如82

解决方案 »

  1.   

    这是最笨的办法:Dim a as integer, b as integer, c as integer
    Dim d as integer, e as integer, f as integer
    For a = 1 To 33
        For b = a To 33
              For c = b To 33
                For d = c To 33
                    For e = d To 33
                        For f = e To 33
                            If a < b And b < c And c < d And d < e And e < f And a + b + c + d + e + f = 82 Then Debug.Print a & vbTab & b & vbTab & c & vbTab & d & vbTab & e & vbTab & f
                        Next f
                    Next e
                Next d
            Next c
        Next b
    Next a
      

  2.   

    Dim a as integer, b as integer, c as integer
    Dim d as integer, e as integer, f as integer
    For a = 1 To 33
        For b = a+1 To 33
              For c = b+1 To 33
                For d = c+1 To 33
                    For e = d+1 To 33
                        For f = e+1 To 33
                            If a < b And b < c And c < d And d < e And e < f And a + b + c + d + e + f = 82 Then Debug.Print a & vbTab & b & vbTab & c & vbTab & d & vbTab & e & vbTab & f
                        Next f
                    Next e
                Next d
            Next c
        Next b
    Next a
      

  3.   

    我来试试:
                               WAITING... ...
      

  4.   

    1 为1+2+……+6=21 28+29+……+33=183,所以这个和必须在[1,183]间内;
    2 设这个和为sum,因为sum是六个数的和,所以这六个数的最大树max>sum/6,最小min<
    sum/6,换句话说,你应该以sum/6 这个整数为中心向两边延拓,这样运行效率或许会有所改善。
    以上仅供参考。