请教一个编程题,有点难度

来源:互联网  时间:2016/7/17 8:36:50

关于网友提出的“ 请教一个编程题,有点难度”问题疑问,本网通过在网上对“ 请教一个编程题,有点难度”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 请教一个编程题,有点难度
描述:

如下图
  O O O
 O O O O
O O O O O
 O O O O
  O O O
要求在圆圈中填入 1 - 19 中一个数字,不得重复,最后每条直线上的数字之和相等。
请高手帮忙解决一下。


解决方案1:

22楼的方程写错了。应该是下面这样。
(1)所有点的和。 X+Y+Z+W=38*5
(2)所有3点直线的和。 2Y+W=38*6
(3)所有4点直线的和。 2Z+2W=38*6
(4)所有5点直线的和。 3X+Y+Z=38*3
这样的话就有解了。

解决方案2:

先写数学模型,在考虑算法。

  y1 w1 y2
 w6 z1 z2 w2
y6 z6 x1 z3 y3
 w5 z5 z4 w3
  y5 w4 y4
X=x1
Y=sum(yn)
Z=sum(zn)
W=sum(wn)
1-19的和是190,也就是说每条线上的和是38。
列方程吧
(1)所有点的和。      X+Y+Z+W=38*5
(2)所有3点直线的和。 2Y+W=38*6
(3)所有4点直线的和。 2Z+W=38*6
(4)所有5点直线的和。 3X+Y+Z=38*3
最后算出X=-38,没有自然数解呀。遗憾。

解决方案3:

x1+x2+x3=38
x4+x5+x6+x7=38
...
一共15个方程,然后编程实现消元(应该不用什么高斯消元吧)。
如果能将元消到4个的话,套4个for循环就能在有限时间里解决了。

解决方案4:

用枚举法做了一下,方法如下:
1.找出所有3个数值之和等于38的所有组合(例如:1, 18, 19)
2.找出所有4个数值之和等于38的所有组合(例如:1, 2, 16, 19)
3.找出所有5个数值之和等于38的所有组合(例如:1, 2, 3,13, 19)
4.将以上组合进行位(与,或)运算。如果位不重复即使所要结果。
方法比较笨,可能还有更巧妙的方法,请高人指点!
源程序360L,所以就不贴出来共享了!

解决方案5:

提个思路不知对否..
由于19个数字不能重复,图中共5行,9列,1至19的和为190。
所以题目中的每条直线不包括列,由此得出每行为38。
约束条件:
3个数字和等于38,且其中必有一个大于13
4个..
5个..
所有数字均不等。

解决方案6:

你用奇数魔方生成法试试 感觉应该可以 

解决方案7:

这种类型题我感觉 编程之前 首先要弄清楚问题 搞清楚问题定义 与 问题的本质是什么 这个题目和组合数学中的幻方有点相似 但又不能直接用幻方构造的算法 看上去很麻烦 你用穷举试试吧

解决方案8:

可以用回溯

上一篇SUSE下cc编译C程序—请高手赐教
下一篇求助关于socket发送http请求保持连接以连续发送请求的问题
明星图片
相关文章
《 请教一个编程题,有点难度》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)