|
我写了个SQL来验证你的答案,随便就找出很多不满足的四个组合:
WITH t AS (
SELECT 1 id, POWER(2,1)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 2 id, POWER(2,1)+POWER(2,3)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 3 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 4 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 5 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 6 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 7 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,16)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 8 id, POWER(2,1)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,17) q FROM DUAL
UNION ALL SELECT 9 id, POWER(2,2)+POWER(2,3)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 10 id, POWER(2,2)+POWER(2,4)+POWER(2,5)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 11 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,7)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 12 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,9 )+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 13 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,11)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 14 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,13)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 15 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,15)+POWER(2,18) q FROM DUAL
UNION ALL SELECT 16 id, POWER(2,2)+POWER(2,4)+POWER(2,6)+POWER(2,8)+POWER(2,10)+POWER(2,12)+POWER(2,14)+POWER(2,16)+POWER(2,17) q FROM DUAL
)
,r(id,cnt,q,path) AS (
select id,1,q,TO_CHAR(id) from t
union all
select t.id,r.cnt+1,BITAND(r.q,t.q),r.path||','||t.id
from r,t
where r.id<t.id and r.cnt<4
)
select path from r where cnt=4 and q=0 and rownum<10;
PATH
-------------
1,2,3,9
1,2,3,10
1,2,3,11
1,2,4,9
1,2,4,10
1,2,4,11
1,2,4,12
2,3,4,10
2,3,4,11
|
|