| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2996 人关注过本帖
标题:2014年蓝桥杯竞赛第六题:六角填数~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:6 
2014年蓝桥杯竞赛第六题:六角填数~
图片附件: 游客没有浏览图片的权限,请 登录注册


试过用数学方法可以不用穷举直接得出答案~就是拿出来看看……看看有么有啥简便方法~
搜索更多相关主题的帖子: 数学 方法 穷举 答案 
2017-10-21 16:20
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
用数学方法刚好可以推出结果为唯一解~代码都省得敲了~一个puts就解决了~挺有意思的~

PS:囧,被说这其实是一道初中数学题~还好我知道方法还会……无语无语无语~~~

[此贴子已经被作者于2017-10-21 16:41编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-21 16:22
zhu299
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2017-9-7
收藏
得分:4 
遍历穷举要20*12*12*12*12*12*12分钟????我晕,要一百年吗?
2017-10-23 21:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 zhu299
据说穷举也可以解~试过用数学方法推理一下恰巧能得到唯一解~嗯,有点类似于解数独游戏,不过这比解数独省事多了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-23 21:48
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:16 
推理是人的思维过程,程序模拟还是很难的,程序穷举就简单的多,但可以根据现有条件减少很多穷举的次数。
比如这题就是2、4、5、6、7、9、10、11、12的全排列,但通过分析8、3这条边,所选的数对为(2,13)、(4,11)、(5,10)、(6,9)、(10,5)、(11,4)、(13,2)。因此先满足这条边,排除满足这条边所需的两个数后仅执行7次剩下的7个数的全排列(按照我前边的8,3这条边组合顺序,好像执行第5次全排列时可得到答案),可以大大地提高执行效率。
9个数的全排列是362880个,执行7次7个数的全排列是7*5040=35280,执行效率提高10倍,如果再添加1这条边的组合,可进一步减少全排列数字,虽然执行效率更高,但代码就写的复杂了。
2017-10-24 05:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 5楼 xzlxzlxzl
嗯,我还是说一下推理和计算机思维的其中一个区别是计算机思维通常具有同一性和通用性,而人工推理却常常没有一个确定的过程的~不过对于一些特解却可能会快速解决(例如这题)9个格满足6条边其实就是解非齐次线性方程组~一般来说其他6个数都由其中三个数的基础解系确定的~只要判断有没有整数解就可以了~当然我承认这样写程序虽然效率超高不过会变得异常复杂——不过通过推理可以知道四个数字之和为26,每个元素都在两条边之间,也就是说每条边算了两次,所以每条边的四个数字之和为(1+2+3+……+12)*2/6=26;

嗯,到底穷举效率最低不过却是最简单的……不过在一些要求高质量的算法题目时往往会超时~一些高要求的题目代码算法往往也离不开推理……因此推理是用来提高代码执行效率的起点的~

[此贴子已经被作者于2017-10-24 07:09编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-24 06:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
囧,我明白对于这些题目为啥自己这么喜欢用推理而不是走程序了~因为这类题的起点都是一些确定的数据,如果初始数据都是些变量最好还是实实在在敲代码吧~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-10-24 07:13
快速回复:2014年蓝桥杯竞赛第六题:六角填数~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054991 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved