将1-n 放入m*m的格子中,有多少种放法

northwolves 2007-10-26 09:15:56
整数M>N>2,,将1-n 放入m*m的格子中,每行每列都只能有唯一的1-n,有多少种放法,如下所示:


1 4 3 2
2 1 4 3
3 2 1 4
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1
...全文
337 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
学习一下
njurain 2008-04-26
  • 打赏
  • 举报
回复
Mark

seems like sudoku
lqjywvb 2008-04-25
  • 打赏
  • 举报
回复
纯数字的!
我在行!!!!!!
lqjywvb 2008-04-25
  • 打赏
  • 举报
回复
你改成N>M>2,就很简单了!
lqjywvb 2008-04-25
  • 打赏
  • 举报
回复
其实应该N>m>2吧??
lqjywvb 2008-04-25
  • 打赏
  • 举报
回复
你的题目是错误的!!!!!!!!!!!!!!!
比如第一行,M格,依次放1到N后,最后一格还放啥啊?
northwolves 2007-11-27
  • 打赏
  • 举报
回复
看来很难啊
medie2005 2007-11-18
  • 打赏
  • 举报
回复
问题就是对尤登方(Youden Square)计数。

Youden represented his designs as Latin rectangles; Fisher represented them as partial Latin squares. The entry in the ith row and jth column of Fisher's square is k if and only if the entry in the kth row and ith column of Youden's rectangle is j.

A Youden square is based on a square 2-design D. Each row of Youden's rectangle is a permutation of the numbers 1,2,...,n, while the columns are the blocks of D. If the blank and non-blank entries of Fisher's square are replaced by 0 and 1 respectively, we obtain the incidence matrix of D.

Here is an example, where the design is a 2-(7,3,1).


Youden's representation:
1 2 3 4 5 6 7
2 3 4 5 6 7 1
4 5 6 7 1 2 3


Fisher's representation:
1 2 3
1 2 3
1 2 3
1 2 3
3 1 2
3 1 2
2 3 1

justju 2007-11-12
  • 打赏
  • 举报
回复
4*3*2*1*
3*2*1*
2*1*
1
=288
xdspower 2007-11-11
  • 打赏
  • 举报
回复
如果是我这样的理解只算可能数量的话应该还是比较好计算的,不过要输出所有的结果就比较麻烦了。
-------------------------------------------
我理解的楼主意思是:有1-n个不同的数字,要放置到m*m的空格中,m>n>2,每个数字只能使用一次,则
有多少可能?
-------------------------------------------
如果是我上面的理解的话,数量为
Cm*m (n)*n! ----------------------1
Cm*m (n) 表示在m*m中选取n个位置
1式的意思就是在m*m中选取n个位置,把n个数字填入共有的可能数。
------------------------------------------------------------
这样要输出的话就有两个大的过程
1个过程是选取位置的过程,然后是在这个位置下的n数全排列输出过程
northwolves 2007-11-10
  • 打赏
  • 举报
回复
继续顶起
shshsh_0510 2007-10-26
  • 打赏
  • 举报
回复
部分拉丁方,当n=m时为拉丁方。
拉丁方的计数比较复杂,应该是open问题。
一个近似:L(n)>((n!)^(2n))/(n^(n^2))
当n-〉infinit,L(n)^(1/n^2)趋近ne^(-2)
mathe 2007-10-26
  • 打赏
  • 举报
回复
做分类的时候还有一个信息可以利用。
如果两个局面通过行,列交换/数字置换后能够相同,我们也可以将它们归为一类。
这个思想再上面数独局面算法里也用到了。只是再上面数独局面计算中,采用穷举所有置换方法(而数字置换通过归一化到统一模式做到)。
而实际上由于每个数字的排放位置都是一些事先列出来的方案选择,我们可以通过一些取巧过滤掉一些置换方法(比如只考虑保持某个数字位置不变的置换方案,交换两个数字位置的方案等等)
mathe 2007-10-26
  • 打赏
  • 举报
回复
哦,发现分类时不能仅仅根据空格的分布位置,还有需要知道每个空格余下可以使用的数字。
不过肯定处理不了N和M比较大的情况
mathe 2007-10-26
  • 打赏
  • 举报
回复
递规求解可以用下面的方法:
i)固定所有数字1的位置在对角线,这样,最后计算出来的结果只要再乘上m!就可以了。
ii)对于每个数字k,不管除了1以外的数字位置,计算出M个k可以排放的所有方案。(其实就是所有错位排序)
将这些方案用一个M*M的集合表示(用M*M的比特位)
iii)现在可以考虑搜索了,每次可以试着将某个数字放在某个集合上。
还有一种可以加速的方案是:
比如现在要计算n个数字的方案,我们可以先算出放入部分数据的方案(比如先算出只放入1-sqrt(n)部分的数据)
对于这些方案,我们根据它们余下的空格的分布可以分类(空格位置完全相同的归一类),
然后剩余数字我们只要对每一类进行计数就可以了。
这个想法来源于我对数独游戏最终结局数目进行计数的程序。
http://blog.csdn.net/mathe/archive/2006/11/27/1416891.aspx
northwolves 2007-10-26
  • 打赏
  • 举报
回复
mathe兄请提供个思路.递归求解?找不到满意的出口.
mathe 2007-10-26
  • 打赏
  • 举报
回复
这个很难有解析解吧。
northwolves 2007-10-26
  • 打赏
  • 举报
回复
1 4 3 2
2 1 4 3
3 2 1 4
4 3 2 1
4 3 2 1
4 3 2 1
4 3 2 1

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧