当前位置: 代码迷 >> C语言 >> 请指点这个题目的算法,不胜感激
  详细解决方案

请指点这个题目的算法,不胜感激

热度:482   发布时间:2006-03-04 17:14:00.0
有点人工智能的意思。
我就说一句,最大的左边和上面的都不能有空位,最小的下面和右边不能是空的。你用这种方法去写一个程序吧。其中要用回溯。

----------------解决方案--------------------------------------------------------
可以先在对输入的六个数进行排序,然后在将后三个付给另一数组,在将两个数组换行分别输出就OK了
----------------解决方案--------------------------------------------------------

数字不相等的情况下,就5种方法吧?


----------------解决方案--------------------------------------------------------
行数 位置
[1]: [1] [2] [3]
[2]: [1] [2] [3]

首先 上边比下边大 左边比右边大
所以 最大数 在位置1 即 [1][1]=max=6
同理 最小数 在位置6 即 [2][3]=min=1
第2
大的数 只能在 [1][2] [2][1]
第2 小的数 只能在 [1][3] [2][2]
[1][2]=5
[2][2]=2
3 和 4 不同行 不同列 可以换位置 2种 [1][3],[2][1]
[1][3]=2
3 和 4 同行 要按照大小顺序 1种 [2][1],[2][2]
[2][1]=5
[1][3]=2
3 4 两个数 同列只能按 上比下大 排列 1种 [1][2],[2][2]
[2][2]=2
3 4 两个数 同行 只能按 左比右大 排列 1种 [1][2],[1][3]

只要按这方法编程就行了

[此贴子已经被作者于2006-3-5 14:44:21编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案