找回密码
 欢迎注册
楼主: TSC999

[讨论] 八个人坐成一排,满足条件的坐法有多少种? 编程求解。

[复制链接]
 楼主| 发表于 2023-8-20 09:34:18 | 显示全部楼层
2# 楼有错误的程序改成下面这样子就行了。这是直来直去的穷举法,思路很笨,但容易理解和套用到解决类似排列组合问题上。

  1. a = Permutations[{1, 2, 3, 4, 5, 6, 7, 8}];
  2. b = {};
  3. Do[If[a[[k, 1]] != 1 && a[[k, 8]] != 1 && a[[k, 1]] != 3 &&  a[[k, 8]] != 3 && a[[k, 1]] != 4 && a[[k, 8]] != 4,
  4.      If[{a[[k, 2]], a[[k, 3]]} != {1, 2} && {a[[k, 2]], a[[k, 3]]} != {2, 1} && {a[[k, 3]], a[[k, 4]]} != {3, 4} && {a[[k, 3]], a[[k, 4]]} != {4, 3} && {a[[k, 4]], a[[k, 5]]} != {3, 4} && {a[[k, 4]], a[[k, 5]]} != {4, 3} && {a[[k, 5]], a[[k, 6]]} != {3, 4} && {a[[k, 5]],
  5.        a[[k, 6]]} != {4, 3},
  6.     If[{a[[k, 1]], a[[k, 2]]} == {2, 1} || {a[[k, 7]], a[[k, 8]]} == {1, 2} || {a[[k, 3]], a[[k, 4]]} == {1, 2} || {a[[k, 3]], a[[k, 4]]} == {2, 1} || {a[[k, 4]], a[[k, 5]]} == {1, 2} || {a[[k, 4]], a[[k, 5]]} == {2, 1} || {a[[k, 5]], a[[k, 6]]} == {1, 2} || {a[[k, 5]],
  7.         a[[k, 6]]} == {2, 1},
  8.      b = b~Join~{a[[k]]}]]], {k, 8!}];
  9. Length[b](* 座位分配方案数 *)
  10. b; (* 所有方案的具体展示 *)
复制代码

点评

nyy
还是觉得我自己的程序比较容易懂。  发表于 2023-8-20 14:04
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-8 16:25 , Processed in 0.041431 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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