楼主: newkid

[每日一题] PUZZLEUP 2015

[复制链接]
论坛徽章:
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
161#
 楼主| 发表于 2015-9-6 10:51 | 只看该作者
lugionline 发表于 2015-9-6 06:18
你说的没错,那些图的确不是最优解,我再数了下K8 的点,其实是19个,如果容许画曲线的话应当是18个

1 ...

我也数过K8的,只数到18个,所以以为全是最佳答案。眼花了。
我自己画的用了很多曲线才搞定。

使用道具 举报

回复
论坛徽章:
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
162#
 楼主| 发表于 2015-9-10 03:31 | 只看该作者
#7 WORD GUESS

Your friend will pick a 4-letter word and you will make guesses in order to find it.
-A word can contain only the letters A, B, C, and D.
-In your guess if at least three letters are in their correct places you will win a prize.
What is the minimum number of guesses in order to guarantee to win the prize?

你的朋友会选择一个4个字母的单词,你会做出猜测来把它找出来。
单词只能包含字母A,B,C和D.
如果你猜对了至少三个字母的正确位置就得奖。
为了确保能得奖,你至少要猜几次?
=============
这个很简单吧。

使用道具 举报

回复
论坛徽章:
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
163#
 楼主| 发表于 2015-9-10 03:40 | 只看该作者
第六题的参考SQL:

--优化:
按照先行后列的顺序选择。当新加入的格子是在新的一行,那么已经出现的行就不可能从横向进行变化了,未来只能从列的方向受影响。把此时的布局从列方向切开来看,前面一截都必须满足黑白相间的条件。比如8X8行号列号都编为 0-7, 假如新加入的格子行号为3, 那么 0-2 行的横向不会变,每列的前三格看起来都必须是“黑白黑”或者“白黑白”。

VAR N NUMBER;
EXEC :N:=8;

WITH c AS (
   SELECT POWER(2,LEVEL-1) id    ------- 8x8 格子按行列顺序编号0~63, 每个看作二进制的一位作唯一ID
         ,CEIL(LEVEL/:N)-1 R -------- 行号0~7
         ,MOD(LEVEL-1,:N) C -------- 列号0~7
         ,LEVEL-1  seq
    FROM DUAL CONNECT BY LEVEL<=:N*:N
    )
,goal AS (SELECT SUM(id) goal FROM c WHERE MOD(R,2)=MOD(C,2))  ---- 目标是排成黑白相间的标准棋盘,黑色的二进制位取1
,c2 AS (  ------------------------当一格被选中,同行同列全部取反,即那一位和1做XOR操作
SELECT c1.id,c1.r,c1.c,c1.seq
      ,SUM(c2.id) AS mask   -------需要取反的那些位之和作为掩码
  FROM c c1,c c2
WHERE c1.r=c2.r OR c1.c=c2.c
GROUP BY c1.id,c1.r,c1.c,c1.seq
)
,c3 AS (  ----------------- 当选择的是一个新的行,已经出现的N-1行在所有列上都必须是黑白相间的,参见上述优化思路
SELECT c1.r,c1.c
      ,NVL(SUM(c2.id),0) AS chk_mask
      ,NVL(SUM(CASE WHEN MOD(c2.R,2)=MOD(c2.C,2) THEN c2.id END),0) AS chk_goal1
      ,NVL(SUM(CASE WHEN MOD(c2.R,2)<>MOD(c2.C,2) THEN c2.id END),0) AS chk_goal2
  FROM c c1,c c2
WHERE c2.r<c1.r AND c2.c=c1.c
GROUP BY c1.r,c1.c
)
,t(last_id,s,cnt,last_r) AS (
SELECT id,mask,0,r FROM c2 WHERE c<=r AND r<=CEIL(:N/2) ------ 由于对称,出发点仅限于1/8即可
UNION ALL
SELECT c2.id
      ,t.s+c2.mask - BITAND(t.s,c2.mask)*2  ----XOR
      ,COUNT(CASE WHEN t.s+c2.mask - BITAND(t.s,c2.mask)*2=goal THEN 1 END) OVER() ---- 答案是否已经出现
      ,c2.r
  FROM t,c2,goal
WHERE t.last_id<c2.id AND t.cnt=0
       AND (c2.r=t.last_r  ------ 要么新选择的格子和上一格在同一行
            OR c2.r>t.last_r AND (SELECT COUNT(*) FROM c3 WHERE c3.r=c2.r AND BITAND(t.s,c3.chk_mask) IN (c3.chk_goal1,c3.chk_goal2))=:N --- 或者新的行,则N个列的前几行都必须是黑白相间
           )
)
,res AS (  ----- 取出满足结果的答案
SELECT s
  FROM t
WHERE t.cnt>0 AND t.s=(SELECT goal FROM goal)
       AND ROWNUM=1
)
SELECT c.seq -----把答案的每一位展开转变成0~63的格子编号
  FROM res,c
WHERE BITAND(res.s,c.id)>0;

       SEQ
----------
         0
         2
         4
         6
         9
        11
        13
        15
        16
        18
        20
        22
        25
        27
        29
        31
        32
        34
        36
        38
        41
        43
        45
        47
        48
        50
        52
        54
        57
        59
        61
        63

32 rows selected.

Elapsed: 00:06:12.82

使用道具 举报

回复
论坛徽章:
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
164#
发表于 2015-9-10 08:04 | 只看该作者
本帖最后由 〇〇 于 2015-9-10 08:05 编辑
newkid 发表于 2015-9-10 03:31
#7 WORD GUESS

Your friend will pick a 4-letter word and you will make guesses in order to find it ...
字母能重复?
比如aaaa,猜任何3个都算对?

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
165#
发表于 2015-9-10 09:15 | 只看该作者
newkid 发表于 2015-9-10 03:31
#7 WORD GUESS

Your friend will pick a 4-letter word and you will make guesses in order to find it ...

这个不简单吧,SQL能做3个字母

使用道具 举报

回复
论坛徽章:
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
166#
 楼主| 发表于 2015-9-10 09:22 | 只看该作者
〇〇 发表于 2015-9-10 08:04
字母能重复?
比如aaaa,猜任何3个都算对?

是的,可以重复。
否则,这条就没意义"如果你猜对了至少三个字母的正确位置就得奖"
三个都对了第四个还能不对?

使用道具 举报

回复
论坛徽章:
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
167#
 楼主| 发表于 2015-9-10 09:23 | 只看该作者
lugionline 发表于 2015-9-10 09:15
这个不简单吧,SQL能做3个字母

你是怎么理解的?
猜一个,错了再猜,总共也没几个吧?

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
168#
发表于 2015-9-10 11:18 | 只看该作者
newkid 发表于 2015-9-10 09:23
你是怎么理解的?
猜一个,错了再猜,总共也没几个吧?

一共是4^4 = 256种可能,每猜一次可以覆盖 (4*4-4+1) = 13种情况,所以至少要猜256/13~20次吧

如果是两个字母,猜中一个计算,AA,AB,BA,BB四种可能,你猜  AB 只能覆盖 (2*2-2+1)=3种情况, AB, AA, BB,所以你要猜两次才行

使用道具 举报

回复
论坛徽章:
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
169#
 楼主| 发表于 2015-9-10 23:07 | 只看该作者
lugionline 发表于 2015-9-10 11:18
一共是4^4 = 256种可能,每猜一次可以覆盖 (4*4-4+1) = 13种情况,所以至少要猜256/13~20次吧

如果是两 ...

明白了,有点像以前那个猜数游戏,但是回馈信息太少了所以步骤将会很多。要证明一种策略是最少步骤是很困难的。

使用道具 举报

回复
论坛徽章:
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
170#
 楼主| 发表于 2015-9-11 09:21 | 只看该作者
网上搜索了一下看不太懂:
http://baike.baidu.com/view/4078500.htm

集合覆盖问题 编辑
本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
集合覆盖问题(Set Covering Problem,简称SCP)是经典的NP一hard问题,同样也是运筹学研究中典型的组合优化问题,是一个计算机科学问题的典型代表,是日常生活中普遍存在的工程设计问题,在人员调动、网络安全、资源分配、电路设计、运输车辆路径安排等领域有广泛的应用,多年来吸引了众多计算机科学家、运筹学研究人员的研究兴趣。
目录1 简介 2 研究
简介编辑
经典SCP描述包含一个集合U以及U内元素构成的若干各小类集合S,目标是找到S 的一个子集,该子集满足所含元素包含了所有的元素且使小类集合个数最少。例如,U={1,2,3,4,5},S={{1,2},{3,4},{2,4,5},{4,5}},找到集合能满足条件的可以有O={{1,2},{3,4}{4,5}}或是O={{1,2},{3,4},{2,4,5}},至于具体选哪种组合,还有引申的一个问题:WSC,即Weighted Set Cover加权集合覆盖,每个集合类被赋予不同的权值,从而由权值决定最终的选择。
对于完全集合覆盖问题的决定版本是NPC(non-deterministic polynomial complete)的,而优化版本是NP-hard的

使用道具 举报

回复

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

本版积分规则 发表回复

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