- 注册时间
- 2015-10-15
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 2200
- 在线时间
- 小时
|
楼主 |
发表于 2023-8-20 09:34:18
|
显示全部楼层
2# 楼有错误的程序改成下面这样子就行了。这是直来直去的穷举法,思路很笨,但容易理解和套用到解决类似排列组合问题上。
- a = Permutations[{1, 2, 3, 4, 5, 6, 7, 8}];
- b = {};
- 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,
- 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]],
- a[[k, 6]]} != {4, 3},
- 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]],
- a[[k, 6]]} == {2, 1},
- b = b~Join~{a[[k]]}]]], {k, 8!}];
- Length[b](* 座位分配方案数 *)
- b; (* 所有方案的具体展示 *)
复制代码 |
|