主题:简单问题求解
lfall
[专家分:0] 发布于 2005-12-20 12:23:00
有一道简单的数学题,想用basic编写出来,不知道哪位能够指导,题目是:
有1-12共12个自然数,可从中任意取出n个数,但取出来的n个数中任意两个数的和不能等于12,任意两个数的差不能等于4,问n的最大值是多少,在最大值的情况下有多少种取法?
回复列表 (共1个回复)
沙发
moz [专家分:37620] 发布于 2005-12-20 14:22:00
这对于我来说可不是简单问题喔:
先从数学考虑吧:
差不能为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$
我来回复