数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: luyuanhong

四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?

[复制链接]
发表于 2013-9-25 10:45 | 显示全部楼层

四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?

穷举法是最原始最"笨"也"最"可靠"最"省心的方法,通常为验证其它思路的正确性时使用.数学答题一般不允许这样. 比如:purebasic穷举法可如下.略为优化了.这是结果: 1092 实际完整循环次数:6144 而纯粹穷举法需要完整循环次数:531441 s.s="" For a=0 To 2 For b=0 To 2:If b=a:Goto b1:EndIf For c=0 To 2:If c=b:Goto c1:EndIf For d=0 To 2:If d=c:Goto d1:EndIf For e=0 To 2:If e=d:Goto e1:EndIf For f=0 To 2:If f=e:Goto f1:EndIf For g=0 To 2:If g=f:Goto g1:EndIf For h=0 To 2:If h=g:Goto h1:EndIf For i=0 To 2:If i=h:Goto i1:EndIf For j=0 To 2:If j=i:Goto j1:EndIf For k=0 To 2:If k=j:Goto k1:EndIf For l=0 To 2:If l=k:Goto l1:EndIf:m+1 If a<>b And b<>c And c<>d And d<>e And e<>f And f<>g And g<>h And h<>i And i<>j And j<>k And k<>l s=Str(a)+Str(b)+Str(c)+Str(d)+Str(e)+Str(f)+Str(g)+Str(h)+Str(i)+Str(j)+Str(k)+Str(l) s0=CountString(s,"0"):s1=CountString(s,"1"):s2=CountString(s,"2") If s0=4 And s1=4 And s2=4 n+1:EndIf:EndIf:s="" l1:Next:k1:Next:j1:Next:i1:Next:h1:Next:g1:Next:f1:Next:e1:Next:d1:Next:c1:Next:b1:Next:Next Debug n Debug "实际完整循环次数:"+Str(m) Debug "而纯粹穷举法需要完整循环次数:"+Str(Pow(3,12))
发表于 2013-9-25 11:11 | 显示全部楼层

四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?

下面引用由ataorj2013/09/25 10:45am 发表的内容:
穷举法是最原始最"笨"也"最"可靠"最"省心的方法,通常为验证其它思路的正确性时使用.数学答题一般不允许这样.
如此说来,美国人用计算机“证明”四色定理,也是穷举法吧,那它的“证明”是否合法?
发表于 2013-9-25 12:01 | 显示全部楼层

四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?

1 我的用语是引号和"通常""一般"
2 计算机“证明”四色定理是否属于穷举法我不清楚,这不是"答题"的一般含义.一般习题也不考查学生的穷举思维.除非针对编程方法等.作为学生考题,没特别要求编程,你会提供程序并且运行出结果而交卷吗?
3 如果有世界难题可通过电脑穷举法解决,则我完全赞赏,这可以不择手段,因为对于当下这个难题,我们更关心结果,关心命题的真伪等.
发表于 2013-9-26 10:42 | 显示全部楼层

四个美国人、四个日本人、四个德国人排成一列,同国籍的人不相邻的排列方法有几种?

[这个贴子最后由天山草在 2013/09/26 08:08pm 第 4 次编辑] 今天仿照陆教授的程序,用 VB6 写了一个。程序中增加了 1092 种“排列”的具体情况。程序及运行结果如下: Private Sub form_Click()         Dim n(12), a(3) As Integer             For k1 = 1 To 3: n(1) = k1      For k2 = 1 To 3: n(2) = k2       For k3 = 1 To 3: n(3) = k3        For k4 = 1 To 3: n(4) = k4         For k5 = 1 To 3: n(5) = k5          For k6 = 1 To 3: n(6) = k6           For k7 = 1 To 3: n(7) = k7            For k8 = 1 To 3: n(8) = k8             For k9 = 1 To 3: n(9) = k9              For k10 = 1 To 3: n(10) = k10               For k11 = 1 To 3: n(11) = k11                For k12 = 1 To 3: n(12) = k12         For i = 1 To 3: a(i) = 0: Next i       For i = 1 To 12: a(n(i)) = a(n(i)) + 1: Next i        If n(1) <> n(2) And n(2) <> n(3) And n(3) <> n(4) And n(4) <> n(5) _        And n(5) <> n(6) And n(6) <> n(7) And n(7) <> n(8) And n(8) <> n(9) _        And n(9) <> n(10) And n(10) <> n(11) And n(11) <> n(12) _        And a(1) = 4 And a(2) = 4 And a(3) = 4 Then        s = s + 1        rint n(1); ","; n(2); ","; n(3); ","; n(4); ","; n(5); ","; n(6); ","; _         n(7); ","; n(8); ","; n(9); ","; n(10); ","; n(11); ","; n(12)        End If      Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next      rint  "-------------------------------------------------"      rint  "排列种数为 "; s End Sub        运行结果: 1 , 2 , 1 , 2 , 1 , 3 , 1 , 3 , 2 , 3 , 2 , 3 1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 1 , 3 , 2 , 3 1 , 2 , 1 , 2 , 1 , 3 , 2 , 3 , 2 , 3 , 1 , 3 1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 1 , 3 , 2 , 3 1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 2 , 3 , 1 , 3 1 , 2 , 1 , 2 , 3 , 1 , 3 , 1 , 2 , 3 , 2 , 3 1 , 2 , 1 , 2 , 3 , 1 , 3 , 1 , 3 , 2 , 3 , 2 1 , 2 , 1 , 2 , 3 , 1 , 3 , 2 , 1 , 3 , 2 , 3 1 , 2 , 1 , 2 , 3 , 1 , 3 , 2 , 3 , 1 , 2 , 3 ……………………………………………………………… 3 , 2 , 3 , 2 , 3 , 1 , 2 , 1 , 2 , 1 , 3 , 1 3 , 2 , 3 , 2 , 3 , 1 , 2 , 1 , 3 , 1 , 2 , 1 3 , 2 , 3 , 2 , 3 , 1 , 3 , 1 , 2 , 1 , 2 , 1 ------------------------------------------------- 排列种数为  1092
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-1-12 11:44 , Processed in 0.082064 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表