|
--------------------------------------
设,如有4个点,4个线段
1 2
4 3
a
d b
c
线段:前点,后点
a: 1 ,2
b: 2, 3
c: 3, 4
d: 1, 4
WITH t AS (
SELECT 'a' n, 1 x,2 y FROM dual UNION ALL
SELECT 'b' n, 2, 3 FROM dual UNION ALL
SELECT 'c' n, 3, 4 FROM dual UNION ALL
SELECT 'd' n, 1, 4 FROM dual
)
SELECT DISTINCT TRANSLATE(TRANSLATE('abcd',replace(sys_connect_by_path(n,',') ,',',''),'1111'),'abcd','0000') str
FROM t
CONNECT BY NOCYCLE
x IN (PRIOR x,PRIOR y)
OR y IN (PRIOR x,PRIOR y)
;
STR
----------------
0010
1000
1100
0110
1001
1011
0001
0011
1110
0111
0100
1111
1101
13 rows selected
-------------------------------------------------------------------------------------------------------------------
设,如有9个点,12个线段
1 2 3
4 5 6
7 8 9
a b
c d e
f g
h i j
k l
线段:前点,后点
a: 1 ,2
b: 2, 3
c: 1, 4
d: 2, 5
e: 3 ,6
f: 4, 5
g: 5, 6
h: 4, 7
i: 5 ,8
j: 6, 9
k: 7, 8
l: 8, 9
WITH t AS (
SELECT 'a' n , 1 x,2 y FROM dual UNION ALL
SELECT 'b' n , 2 , 3 FROM dual UNION ALL
SELECT 'c' n , 1 , 4 FROM dual UNION ALL
SELECT 'd' n , 2 , 5 FROM dual UNION ALL
SELECT 'e' n , 3 , 6 FROM dual UNION ALL
SELECT 'f' n , 4 , 5 FROM dual UNION ALL
SELECT 'g' n , 5 , 6 FROM dual UNION ALL
SELECT 'h' n , 4 , 7 FROM dual UNION ALL
SELECT 'i' n , 5 , 8 FROM dual UNION ALL
SELECT 'j' n , 6 , 9 FROM dual UNION ALL
SELECT 'k' n , 7 , 8 FROM dual UNION ALL
SELECT 'l' n , 8 , 9 FROM dual
)
SELECT -- DISTINCT TRANSLATE(TRANSLATE('abcdefghijkl',replace(sys_connect_by_path(n,',') ,',',''),'111111111111'),'abcdefghijkl','000000000000') str
COUNT(DISTINCT TRANSLATE(TRANSLATE('abcdefghijkl',replace(sys_connect_by_path(n,',') ,',',''),'111111111111'),'abcdefghijkl','000000000000') ) cnt
FROM t
CONNECT BY NOCYCLE
x IN (PRIOR x,PRIOR y)
OR y IN (PRIOR x,PRIOR y)
;
CNT
----------
1609
|
|