楼主: 〇〇

[每日一题] puzzleup 2020 11月开始

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
91#
发表于 2020-12-24 22:54 来自手机 | 只看该作者
思路是简单,可是计算量巨大

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
92#
发表于 2020-12-24 22:59 | 只看该作者
#8

SQL> with t as (
  2  select replace(sys_connect_by_path(n,','),',') str
  3    from (select level n from dual connect by level <=6)
  4   where level = 6
  5    connect by nocycle prior n <> n
  6  ),
  7  s as (
  8  select str,
  9         substr(str,1,3) a,
10         substr(str,2,3) b,
11         substr(str,3,3) c,
12         substr(str,4,3) d
13   from t ),
14  r (lvl,str_list,abcd_list) as (select 1,
15                                        str,
16                                        a||','||b||','||c||','||d
17                                   from s
18                                  union all
19                                 select lvl+1,
20                                        r.str_list||','||s.str,
21                                        r.abcd_list||','|| s.a||','||s.b||','||s.c||','||s.d
22                                   from r,s
23                                  where instr(r.str_list,s.str)=0
24                                    and instr(r.abcd_list,s.a)=0
25                                    and instr(r.abcd_list,s.b)=0
26                                    and instr(r.abcd_list,s.c)=0
27                                    and instr(r.abcd_list,s.d)=0
28                                    and rownum=1
29                                    )
30  select max(lvl) from r
31  /

  MAX(LVL)
----------
        26

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
93#
发表于 2020-12-24 23:10 | 只看该作者
不加一个 rownum=1  算不出来。 加了,就成了碰运气了,值不确定,我最大得到 26。。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
94#
发表于 2020-12-24 23:46 | 只看该作者
solomon_007 发表于 2020-12-24 22:59
#8 SQL> with t as (  2  select replace(sys_connect_by_path(n,','),',') str  3    from (select level  ...

你加上那个and rownum=1没有什么道理。答案是会互相影响的。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
95#
发表于 2020-12-24 23:56 | 只看该作者
solomon_007 发表于 2020-12-24 22:59
#8 SQL> with t as (  2  select replace(sys_connect_by_path(n,','),',') str  3    from (select level  ...

在我这边跑出来的答案是   
MAX(LVL)
----------
        22

可见你的算法有一定的随机性,不是每次都能找出最大解。

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
96#
发表于 2020-12-25 08:45 | 只看该作者
newkid 发表于 2020-12-24 23:56
在我这边跑出来的答案是   MAX(LVL)----------        22可见你的算法有一定的随机性,不是每次都能找出最 ...

是的,不加 rownum=1 我的跑不出来

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
97#
发表于 2020-12-25 08:52 来自手机 | 只看该作者
本帖最后由 newkid 于 2020-12-25 08:53 编辑

要是能跑出26 也是很厉害了,毕竟理论上也只能有30个。

使用道具 举报

回复
论坛徽章:
24
2010年世界杯参赛球队:韩国
日期:2009-12-20 20:11:33天枰座
日期:2015-07-18 17:23:54托尼托尼·乔巴
日期:2017-01-25 09:38:19秀才
日期:2017-03-02 10:30:14秀才
日期:2017-03-02 10:30:35秀才
日期:2017-06-29 10:16:48技术图书徽章
日期:2017-07-11 09:10:26乌索普
日期:2023-01-05 23:01:5220周年集字徽章-年	
日期:2021-05-27 09:37:50蒙奇·D·路飞
日期:2022-10-27 21:49:38
98#
发表于 2020-12-25 10:24 | 只看该作者
dhhb 发表于 2020-12-24 20:45
6个. 6! 纯枚举.根据每次选择数字,排除不符合规则的, 一个可能的结果:1, 2, 3, 4, 5, 61, 2, 4, 3, 5, 61 ...

发现漏了几个,22个的结果:
1, 2, 3, 4, 5, 6;
1, 2, 4, 3, 5, 6;
1, 2, 5, 3, 4, 6;
1, 2, 6, 3, 5, 4;
1, 3, 2, 4, 6, 5;
1, 3, 4, 2, 5, 6;
1, 3, 5, 2, 6, 4;
1, 3, 6, 2, 4, 5;
1, 4, 2, 3, 6, 5;
1, 4, 3, 2, 6, 5;
1, 4, 6, 2, 3, 5;
1, 5, 3, 6, 4, 2;
1, 5, 4, 6, 3, 2;
1, 6, 2, 5, 4, 3;
1, 6, 4, 5, 2, 3;
2, 1, 5, 6, 3, 4;
2, 3, 1, 6, 5, 4;
2, 6, 1, 4, 5, 3;
3, 6, 1, 5, 2, 4;
5, 4, 2, 1, 6, 3;
5, 6, 4, 3, 1, 2;
6, 5, 3, 2, 1, 4;

使用道具 举报

回复
论坛徽章:
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
99#
 楼主| 发表于 2020-12-25 18:33 | 只看该作者
newkid 发表于 2020-12-25 08:52
要是能跑出26 也是很厉害了,毕竟理论上也只能有30个。

理论上怎么分析

使用道具 举报

回复
论坛徽章:
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
100#
 楼主| 发表于 2020-12-25 21:13 | 只看该作者

  1. 6个数的全排列有720种,6中取3的有120种
  2. with t6 as(select 1 n union all select n+1 from t6 where n<6)
  3. ,t as(select 1 lv, n n1 from t6 union all select lv+1, n1*10+n from t,t6
  4. where lv<6 and instr(n1,n)=0)
  5. ,tall as(select row_number()over(order by n1)rn,n1 from t where lv=6)
  6. ,t3 as(select distinct substr(n1,1,3) s3 from tall)
复制代码

使用道具 举报

回复

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

本版积分规则 发表回复

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