楼主: newkid

PUZZLEUP 2014

[复制链接]
论坛徽章:
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
371#
 楼主| 发表于 2014-11-13 05:43 | 只看该作者
lastwinner 发表于 2014-11-12 14:09
嗯,对,4人的话,分组可能性:C(4,2)*C(2,2)/P(2,2)=3
最终是两个队,两个队中任意一队是同校的就行,所 ...

这就是我的方法,你再仔细看我的公式,虽然繁琐,但有章可循。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
372#
发表于 2014-11-13 10:27 | 只看该作者
newkid 发表于 2014-11-13 05:43
这就是我的方法,你再仔细看我的公式,虽然繁琐,但有章可循。

对,感觉出来了,一加一减,一加一减……

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
373#
发表于 2014-11-13 10:34 | 只看该作者
newkid 发表于 2014-11-13 05:41
#16 Colored Squares

如果没有最后的同色必须相邻的条件,结果就会多出很多了
这是一个有额外限制条件的概率问题

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
114
SQL数据库编程大师
日期:2013-12-06 13:59:43萤石
日期:2013-12-06 15:50:21ITPUB元老
日期:2007-09-25 17:05:532011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:19喜羊羊
日期:2015-03-24 13:02:282015年新春福章
日期:2015-03-06 11:57:31喜羊羊
日期:2015-03-04 14:49:39马上有房
日期:2015-01-22 17:30:45马上加薪
日期:2014-12-25 08:48:51
374#
发表于 2014-11-13 10:35 | 只看该作者
newkid 发表于 2014-11-8 05:15
配对方法总数:(分母)
C(24,2)*C(22,2)*C(20,2)*C(18,2)*C(16,2)*C(14,2)*C(12,2)*C(10,2)*C(8,2)*C(6,2 ...

真牛B,头痛

使用道具 举报

回复
论坛徽章:
41
生肖徽章:鼠
日期:2013-12-06 14:15:45生肖徽章:牛
日期:2013-12-06 14:15:45生肖徽章:虎
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45
375#
发表于 2014-11-14 10:08 | 只看该作者
# 16

这个是不是可以简化成 9块儿分4组块儿,每组块儿之多3,有多少种可能? 再乘以 4! = 24 就是最终答案?
9块儿分4组好像有 104种可能 , 那答案是不是 104 *24 = 2496 ?

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
114
SQL数据库编程大师
日期:2013-12-06 13:59:43萤石
日期:2013-12-06 15:50:21ITPUB元老
日期:2007-09-25 17:05:532011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:19喜羊羊
日期:2015-03-24 13:02:282015年新春福章
日期:2015-03-06 11:57:31喜羊羊
日期:2015-03-04 14:49:39马上有房
日期:2015-01-22 17:30:45马上加薪
日期:2014-12-25 08:48:51
376#
发表于 2014-11-14 13:18 | 只看该作者
#15
--24个人
with a as (select power(2, rownum-1) rn, rownum rnc from dual connect by rownum <=24)
, b as (select rownum rn,  a.rn+b.rn  txx ,  
--flag为1是同一队
case when b.rnc=a.rnc+1 and b.rnc<=16 and mod(b.rnc,2)=0  then 1 else 0 end  flag
  from a, a b where b.rn>a.rn)
,d (idx, rn, txx,flag) as
(  select 1 idx, b.rn,  b.txx ,  b.flag   from b
   union all
   select d.idx+1, b.rn , d.txx +b.txx txx  ,d.flag+b.flag
    from d,b where b.rn>d.rn  and  bitand(d.txx,b.txx)=0
   )
--4代表至少4队
select sum(case when  d.flag>=4 then 1 else 0 end) ff,   count(1) alll
,sum(case when  d.flag>=1 then 1 else 0 end) /  count(1)
--12是配成12队的
from d where d.idx=12
---------------------------------写的效率很低,运行不出来



使用道具 举报

回复
论坛徽章:
41
生肖徽章:鼠
日期:2013-12-06 14:15:45生肖徽章:牛
日期:2013-12-06 14:15:45生肖徽章:虎
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45
377#
发表于 2014-11-14 13:24 | 只看该作者
piliskys 发表于 2014-11-14 13:18
#15
--24个人
with a as (select power(2, rownum-1) rn, rownum rnc from dual connect by rownum d.rn  ...

  我的SQL也运行不出来,没好意识贴出来。
看看你的能运行到几个人。

使用道具 举报

回复
论坛徽章:
41
生肖徽章:鼠
日期:2013-12-06 14:15:45生肖徽章:牛
日期:2013-12-06 14:15:45生肖徽章:虎
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45
378#
发表于 2014-11-15 10:55 | 只看该作者
16#
9块儿分4组块儿,每组块儿之多3的所有可能如下;

,1,23,456,789
,1,23,457,689
,1,23,478,569
,1,235,47,689
,1,235,478,69
,1,236,45,789
,1,236,457,89
,1,236,47,589
,1,245,36,789
,1,245,369,78
,1,25,369,478
,1,258,369,47
,12,3,456,789
,12,3,457,689
,12,3,478,569
,12,356,4,789
,12,356,47,89
,12,356,478,9
,12,36,45,789
,12,36,457,89
,12,36,47,589
,12,369,4,578
,12,369,45,78
,12,369,457,8
,12,369,458,7
,12,369,47,58
,12,369,478,5
,123,4,56,789
,123,4,569,78
,123,4,578,69
,123,45,6,789
,123,45,689,7
,123,45,69,78
,123,456,7,89
,123,456,78,9
,123,457,6,89
,123,457,69,8
,123,458,69,7
,123,47,5,689
,123,47,56,89
,123,47,568,9
,123,47,569,8
,123,47,58,69
,123,47,589,6
,123,478,5,69
,123,478,56,9
,124,3,56,789
,124,3,569,78
,124,3,578,69
,124,356,7,89
,124,356,78,9
,124,36,5,789
,124,36,578,9
,124,36,589,7
,124,369,5,78
,124,369,58,7
,125,3,47,689
,125,3,478,69
,125,36,4,789
,125,36,47,89
,125,36,478,9
,125,369,4,78
,125,369,47,8
,14,2,356,789
,14,2,369,578
,14,23,56,789
,14,23,569,78
,14,23,578,69
,14,235,6,789
,14,235,689,7
,14,235,69,78
,14,236,5,789
,14,236,578,9
,14,236,589,7
,14,25,36,789
,14,25,369,78
,14,256,3,789
,14,258,369,7
,145,2,36,789
,145,2,369,78
,145,23,6,789
,145,23,689,7
,145,23,69,78
,145,236,7,89
,145,236,78,9
,147,2,356,89
,147,2,36,589
,147,2,369,58
,147,23,5,689
,147,23,56,89
,147,23,568,9
,147,23,569,8
,147,23,58,69
,147,23,589,6
,147,235,6,89
,147,235,69,8
,147,236,5,89
,147,236,58,9
,147,25,3,689
,147,25,36,89
,147,25,369,8
,147,256,3,89
,147,258,3,69
,147,258,36,9

使用道具 举报

回复
论坛徽章:
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
379#
 楼主| 发表于 2014-11-17 09:32 | 只看该作者
peter1166 发表于 2014-11-15 10:55
16#
9块儿分4组块儿,每组块儿之多3的所有可能如下;

你把SQL写出来就发章。
我写的是这样,感觉还是有点啰嗦:

WITH T (s,cnt,flag) AS (
SELECT CAST(c AS VARCHAR2(10)),1,0
FROM (SELECT TO_CHAR(LEVEL) c FROM DUAL CONNECT BY LEVEL<=4)
UNION ALL
SELECT s||c
      ,cnt+1
      ,CASE WHEN FLAG=1 THEN 0 WHEN REGEXP_COUNT(s,c) =1 AND MOD(cnt+1,3)<>0 AND cnt+1>3 AND SUBSTR(s,cnt-1,1)=c THEN 1 ELSE 0 END
  FROM t,(SELECT TO_CHAR(LEVEL) c FROM DUAL CONNECT BY LEVEL<=4)
WHERE cnt<9
       AND (flag=1 AND SUBSTR(s,cnt,1)=c
            OR flag=0 AND INSTR(s,c)=0
            OR flag=0 AND REGEXP_COUNT(s,c) IN (1,2)
                AND (cnt+1>3 AND MOD(cnt+1,3)<>1 AND (SUBSTR(s,cnt+1-3,1)=c OR SUBSTR(s,cnt,1)=c)
                     OR cnt+1>3 AND SUBSTR(s,cnt+1-3,1)=c
                     OR MOD(cnt+1,3)<>1 AND  SUBSTR(s,cnt,1)=c
                     OR REGEXP_COUNT(s,c) =1 AND MOD(cnt+1,3)<>0 AND cnt+1>3 AND SUBSTR(s,cnt-1,1)=c
                    )
            )
)
SELECT COUNT(*) FROM t
WHERE cnt=9
       AND TRANSLATE('1234','A'||s,'A') IS NULL;

使用道具 举报

回复
论坛徽章:
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
380#
 楼主| 发表于 2014-11-17 09:34 | 只看该作者
peter1166 发表于 2014-11-14 13:24
我的SQL也运行不出来,没好意识贴出来。
看看你的能运行到几个人。

我也写了一个,只试了一半的数据:

假设总共N个人,P对来自同校,要求至少有K对来自同校的配对方法。

找出所有的配对,求出 K~P 对同校的组合,求出剩下非同校配对的组合。

VAR N NUMBER;
VAR P NUMBER;
VAR K NUMBER;
EXEC :N:=12;
EXEC :P:=4;
EXEC :K:=2;


WITH all_pairs AS
(SELECT N1,N2,CASE WHEN CEIL(N1/2)=CEIL(N2/2) AND N2/2<=:P THEN 1 ELSE 0 END AS SAME_SCHOOL
       ,BIT1+BIT2 bits
  FROM (SELECT LEVEL N1,POWER(2,LEVEL-1) BIT1 FROM DUAL CONNECT BY LEVEL<=:N)
      ,(SELECT LEVEL N2,POWER(2,LEVEL-1) BIT2 FROM DUAL CONNECT BY LEVEL<=:N)
WHERE N1<N2
)
,same_pairs as (SELECT * FROM all_pairs WHERE SAME_SCHOOL=1)
,diff_pairs as (SELECT * FROM all_pairs WHERE SAME_SCHOOL=0)
,same_comb(s,bits,cnt,last_n1) AS (
SELECT CAST(N1||','||N2 AS VARCHAR2(100)),bits,1,N1
  FROM same_pairs
UNION ALL
SELECT s||'|'||N1||','||N2,same_comb.bits+same_pairs.bits,cnt+1,same_pairs.N1
  FROM same_comb,same_pairs
WHERE N1>LAST_N1 AND CNT<:P
)
,diff_comb(s,bits,cnt,last_n1) AS (
SELECT CAST(N1||','||N2 AS VARCHAR2(100)),bits,1,N1
  FROM diff_pairs
UNION ALL
SELECT s||'|'||N1||','||N2,diff_comb.bits+diff_pairs.bits,cnt+1,diff_pairs.N1
  FROM diff_comb,diff_pairs
WHERE N1>LAST_N1 AND CNT<:N/2-:K
       AND BITAND(diff_comb.bits,diff_pairs.bits)=0
)
SELECT COUNT(*)
       --s.s||'|'||d.s,s.cnt,d.cnt
  FROM (SELECT s.*,ROWNUM FROM same_comb s WHERE cnt>=:K) s,diff_comb d
WHERE s.cnt+d.cnt=:N/2 AND BITAND(s.bits,d.bits)=0
       ;

使用道具 举报

回复

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

本版积分规则 发表回复

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