123
返回列表 发新帖
楼主: 〇〇

用q来解骑士周游问题

[复制链接]
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
21#
 楼主| 发表于 2016-6-2 10:22 | 只看该作者
〇〇 发表于 2016-6-1 15:10
第14步还可以,然后就不行了
q)t1:t
q)\t do[13;count t1:select (path*100)+id2,b+b2,id:id2 from t1  ...

还不如免费软件
sqlite> WITH
   ...> d(a,b) as(select 1,1 union all select a+1,b*2 from d where a<25),
   ...>  c AS (
   ...>  SELECT a id, b, round((a+1.5)/5) r,(a-1)%5 c FROM d
   ...>  )
   ...>  ,m AS (
   ...>      SELECT c1.id id1,c2.id id2,c1.b b1,c2.b b2
   ...>       FROM c c1,c c2
   ...>      WHERE (ABS(c1.r-c2.r)=1 and ABS(c1.c-c2.c)=2)or (ABS(c1.r-c2.r)=2 and ABS(c1.c-c2.c)=1)
   ...>  )   --select count(*) from m
   ...>  ,t(path,b,id) AS (
   ...>  SELECT CAST(id AS VARCHAR2(100)),b,id FROM c WHERE id=1
   ...>  UNION ALL
   ...>  SELECT t.path||','||m.id2,t.b+m.b2,m.id2 FROM t,m WHERE t.id=m.id1 AND (b/(b2))%2=0
   ...>  )
   ...> SELECT count( path) FROM t WHERE t.b=(2<<24)-1;
304
Run Time: real 21.178 user 20.545332 sys 0.265202

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表