回 帖 发 新 帖 刷新版面

主题:简单问题求解

有一道简单的数学题,想用basic编写出来,不知道哪位能够指导,题目是:
有1-12共12个自然数,可从中任意取出n个数,但取出来的n个数中任意两个数的和不能等于12,任意两个数的差不能等于4,问n的最大值是多少,在最大值的情况下有多少种取法?

回复列表 (共1个回复)

沙发

这对于我来说可不是简单问题喔:
先从数学考虑吧:
差不能为4:把数分三段,即15,26,37,48,59,6 10,7 11,8 12不能同选
和不能为12:把数分两段,即1 11,2 10,39,48,57不能同选
剩下6 和 12是可以选的,剔除与这两个数互斥的2,10,8
尽量取三段中的前后两段数,取1 4 7 9得最多的6个数
1,4,6,7,9,12

用QB程序可就不知道怎么实现这样的计算过程了
defint A-Z
dim s(12), p(12)
for i=1 to 12
    s(i)=i
next
do
  if i>k-1 then
     if k>mk then
        mk=k
        r$=""
     endif
     if k=mk then
         r$=r$+chr$(10)
       for j=1 TO k
         r$=r$+str$(s(p(j)))
       next
     endif
     if p(k)<12 then
        k=k+1
        p(k)=p(k-1)
     endif
  endif
     if p(k)>=12 then k=k-1
     p(k)=p(k)+1
  for i=1 TO k-1
      if s(p(k))+s(p(i))=12 or abs(s(p(k))-s(p(i)))=4 then exit for
  next
loop until p(1)=12
cls
print r$

我来回复

您尚未登录,请登录后再回复。点此登录或注册