C#穷举一道题 80

如图,左边是八个格子,每个格子里可以放一块右边的骨牌,骨牌分上下两块,每块上的点数等于实际数值,空白的做0,如第一块骨牌表示上0,下0,第二块上0下1,,这样左边格子放满... 如图,左边是八个格子,每个格子里可以放一块右边的骨牌,骨牌分上下两块,每块上的点数等于实际数值,空白的做0,如第一块骨牌表示上0,下0,第二块上0下1,,这样左边格子放满后,全图实际成为4行4列16个数字。要求4行,4列及对角两条线的数字和值均为6。要程序,不要结果。注:没块骨牌只能用一次。
如果有比较好的方法可以不穷举,如果穷举了可以合理去掉一些骨牌,比如6/6 5/6这些比较大的排肯定用不上的。另外,骨牌上的数字可以上下对调。
展开
 我来答
syht2000
高粉答主

2014-06-27 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
这个就是所谓的魔方矩阵或者叫幻方,你是不是写错了,和值怎么可能是6 ,4*4的幻方和值应该是34

平面魔方的一般定义:将自然数 1 到 N^2, 排列 N 行 N 列的方阵,使每行、每列及两条主对角线上的 N 个数的和都等于N (N^2+1)/2,这样的方阵称为 N 阶幻方。

N为4的倍数时
采用对称元素交换法。

首先把数1到n×n按从上至下,从左到右顺序填入矩阵

然后将方阵的所有4×4子方阵中的两对角线上的数关于大方阵中心作中心对称交换(注意是各各子矩阵对角线上面的数), 即a(i,j)与a(n+1-i,n+1-j)交换,所有其它位置上的数不变。(或者将对角线不变,其它位置对称交换也可)
追问

尝试了很多组合,最好时,只有一个对角不成6,其它行列和另一外一个对角都成6了。骨牌上的数字可以上下对调,但是不能重复使用,实在搞不定了,于是决定程序爆破,但是自己又是半吊子编程水平,所以求编程。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式