日期:2014-05-20  浏览次数:20626 次

一道企业的面试题目,大家讨论一下吧
问,往一个4×4的大方格中填入数字1,2,3,4,要求每个每行每列   都是自然数1-4的排列

  且相邻方格的数字不能相同,问,共有多少填法?


    比如   1       2       3       4
             
              2       1       4       3
   
              3       4       1       2
 
              4       3       2       1     就满足条件




------解决方案--------------------
mark
明天再说
------解决方案--------------------
数独得变种?
------解决方案--------------------
我的答案是:96,方法如下,不知道对错。

我是这样想的,自上到下,自左到右,这四个小正方形分别命名为A B C D, A中,abcd 可以自由排列,共有24种方法;B中,对于A中每一种排序,第一行,只能放入两个字母,(除去A中已有的两个)有2种排序,B中第二行是有2种方法(你会发现,这两个字母和A中弟一行两个字母一样),C中;对于A中每一种程序,第一列只能放入两个字母,有2种方法(同B中第一行类似);C中第二列,只能放入两个字母,有2种排列(同B中第二行类似);D中每一次对于A,B,C只能有一个排序。所以,答案=24*2*2*2*2=96。



------解决方案--------------------
96种 方法就是上上楼说的
------解决方案--------------------
遍历一遍所有的可能?
------解决方案--------------------
mark 呆会做
------解决方案--------------------
72*72
------解决方案--------------------
384,方法同xxh0534
------解决方案--------------------
这个问题不错,有很多实用价值。
------解决方案--------------------
mark
------解决方案--------------------
xxh0534() 说的,有个小问题。我们首先重新把这个4*4的方格的每个位置命名:
a1 a2 b1 b2 a区 b区
a3 a4 b3 b4
c1 c2 d1 d2 c区 d区
c3 c4 d3 d4
OK。然后,根据xxh0534()的做法,b区和c区的排列是互相无关的。其实不是。必须指出,b1、b3和c1、c2不能正好凑成1、2、3、4。也就是说,当a区和b区确定后(此时的方案个数是24*2*2),c区的数据必须根据b区的已经确定的数据来填,即去除上述不可能的排列方案后,新的c区的排列数是2*2-1,所以,最终结果是:24*2*2*(2*2-1)=288。这是我做出的最大值了。当然,也有可能数值会更小。
------解决方案--------------------
24*4*2=192,
能给出正确答案吗?
------解决方案--------------------
哪个给写个代码
------解决方案--------------------
4 3 2 1
3 2 1 1
2 1 1 1
1 1 1 1
=4*3*3*2*2*2=288
------解决方案--------------------
我觉得是192种,不过不知道怎么用代码实现,有灵感的时候再说吧
------解决方案--------------------
懒得想~~
------解决方案--------------------
96 24*2*2
------解决方案--------------------
9宫问题啊
当然成4宫拉。
回溯法解决
写函数判断是否能插入
能插入再前进不行就回溯
------解决方案--------------------
我觉得是24*(4*(4-1)) = 288种
A区24种,B区4,C区本来也有4种,但有1种情况不行,D区只有一种情况
------解决方案--------------------