$Problem’s \ Website$
$Problem’s \ Description$
给一个$n \times n$的矩阵,将其中的数任意摆放,使其每行、每列、两条对角线所有数之和相等。
$Solution$
首先我们要确定那个相等的和是多少,还是比较好算的,即$lim = tot \div n,\ tot=\sum\limits_{i=1}^{n\times n}{a[i]}$。
因为$n$不是$3$就是$4$,所以我们可以暴力枚举一遍,找出可以拼凑成$lim$的数,用一个变量记录次数,然后按照次数进行降序排序。
最后我们进行$dfs$,下面说一下怎样剪枝
首先明确,我们是一行一行的搜,即对于$x$,先把$y$搜完。
如果一行搜完,这一行的和不为$lim$,再见。
如果当前位置处于对角线,那么要求次数$> 3$,否则,再见。
在倒数第二行时,判断最后一行是否可以使当前的列之和为$lim$,否则,再见。
最后,温馨提示:写搜索时一定要思路清晰,否则后果不堪设想。。。
$Code$
1 |
|
$rp++$