回 帖 发 新 帖 刷新版面

主题:排列组合

将1~6这6个自然数排成两行三列,要求每一行相邻的数右边的比左边的大,每一列相对应的数下面的比上面的大,编程找出所有这样的排列。
例如:1  2  3
   4  5  6
就是满足条件的这样一组排列。

回复列表 (共9个回复)

沙发

以前有人提出过,好象叫什么蛇型距阵

板凳

这题经典,我写出代码

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 楼

这跟蛇型距阵一样吗???应该不一样的啊

4 楼

的确跟蛇形矩阵没有关系:
蛇形矩阵如:

1  2  6  7  ..
3  5  8  ..
4  9  ..
10 ..
..

而这道题的五个解为:

123   124   125   134   135
456   356   346   256   246

5 楼

不是的啊,上次看到的嘛,一圈一圈饶的那钟

6 楼

谢谢大家的帮助,在此非常感谢davidw017!!
再次感谢!

7 楼

蛇形矩阵是正确的
顺序排也是可以的

8 楼

顶一下

9 楼


可以用穷搜,第一个数为1,然后判断右边的和下边的,进行搜索。

我来回复

您尚未登录,请登录后再回复。点此登录或注册