主题:排列组合
163111511
[专家分:90] 发布于 2005-07-21 08:33:00
将1~6这6个自然数排成两行三列,要求每一行相邻的数右边的比左边的大,每一列相对应的数下面的比上面的大,编程找出所有这样的排列。
例如:1 2 3
4 5 6
就是满足条件的这样一组排列。
回复列表 (共9个回复)
沙发
methuselah [专家分:6840] 发布于 2005-07-21 08:48:00
以前有人提出过,好象叫什么蛇型距阵
板凳
davidw017 [专家分:4170] 发布于 2005-07-21 18:07:00
这题经典,我写出代码
cls
a = 1: f = 6
for b = 2 to 4
for c = b + 1 to 5
for d = 2 to 4
for e = d + 1 to 5
if e <= b then 10
if a + b + c + d + e + f <> 21 then 10
if a * b * c * d * e * f <> 720 then 10
print a;b;c: print d;e;f: print
10 next e,d,c,b
end
3 楼
zqnhlm [专家分:780] 发布于 2005-07-21 22:12:00
这跟蛇型距阵一样吗???应该不一样的啊
4 楼
davidw017 [专家分:4170] 发布于 2005-07-21 22:37:00
的确跟蛇形矩阵没有关系:
蛇形矩阵如:
1 2 6 7 ..
3 5 8 ..
4 9 ..
10 ..
..
而这道题的五个解为:
123 124 125 134 135
456 356 346 256 246
5 楼
methuselah [专家分:6840] 发布于 2005-07-22 08:49:00
不是的啊,上次看到的嘛,一圈一圈饶的那钟
6 楼
163111511 [专家分:90] 发布于 2005-07-22 11:41:00
谢谢大家的帮助,在此非常感谢davidw017!!
再次感谢!
7 楼
moz [专家分:37620] 发布于 2005-07-22 12:30:00
蛇形矩阵是正确的
顺序排也是可以的
8 楼
163111511 [专家分:90] 发布于 2005-07-24 10:10:00
顶一下
9 楼
鹤舞白沙1993 [专家分:0] 发布于 2006-06-08 16:20:00
可以用穷搜,第一个数为1,然后判断右边的和下边的,进行搜索。
我来回复