----算24点 穷尽算法
WITH NUM1 AS(
SELECT DECODE (E.O,
'+',A.N+B.N,
'-',A.N-B.N,
'*',A.N*B.N,
'/',A.N/B.N
) AS N1,C.N N2,D.N N3,'('||A.N||E.O||B.N||')' S
FROM T24 A,T24 B,T24 C,T24 D ,O24 E
WHERE A.N NOT IN (B.N,C.N,D.N)
AND B.N NOT IN (C.N,D.N)
AND C.N <> D.N),
-----1111模式
NUM2 AS( SELECT DECODE(E.O,
'+',N1+N2,
'-',N1-N2,
'*',N1*N2,
'/',N1/N2
) AS M3,N3 M4,'('||S||E.O||N2||')' M5 ,TO_CHAR(N3) M6
FROM NUM1,O24 E
UNION ALL---11*11模式
SELECT DECODE(E.O,
'+',N3+N2,
'-',N3-N2,
'*',N3*N2,
'/',N3/N2
) AS M3,N1 M4,'('||N3||E.O||N2||')' M5,S M6
FROM NUM1,O24 E),
NUM3 AS( SELECT DECODE(E.O,
'+',M3+M4,
'-1',M3-M4,
'*',M3*M4,
'/',M3/M4
) AS TOTAL,M5||E.O||M6 TS
FROM NUM2,O24 E)
SELECT * FROM NUM3 WHERE TOTAL=24
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24638034/viewspace-695236/ ,如需转载,请注明出处,否则将追究法律责任。