newkid推荐的帖子, 过来试试。
弄了一下八皇后, 好像不是太难。
- with t as (select rownum-1 c from dual connect by rownum<=8)
- , tt as (
- select t1.c c1, t2.c c2, t3.c c3, t4.c c4, t5.c c5, t6.c c6, t7.c c7, t8.c c8
- ,0 r1, 1 r2, 2 r3, 3 r4, 4 r5, 5 r6, 6 r7, 7 r8 --行不同
- from t t1, t t2, t t3, t t4, t t5, t t6, t t7, t t8
- )
- select
- '('||r1||','||c1||') ' ||
- '('||r2||','||c2||') ' ||
- '('||r3||','||c3||') ' ||
- '('||r4||','||c4||') ' ||
- '('||r5||','||c5||') ' ||
- '('||r6||','||c6||') ' ||
- '('||r7||','||c7||') ' ||
- '('||r8||','||c8||') ' queen8
- from tt
- --列不同
- where c2 not in (c1)
- and c3 not in (c1, c2)
- and c4 not in (c1, c2, c3)
- and c5 not in (c1, c2, c3, c4)
- and c6 not in (c1, c2, c3, c4, c5)
- and c7 not in (c1, c2, c3, c4, c5, c6)
- and c8 not in (c1, c2, c3, c4, c5, c6, c7)
- --斜线不同
- and r2+c2 not in (r1+c1)
- and r3+c3 not in (r1+c1, r2+c2)
- and r4+c4 not in (r1+c1, r2+c2, r3+c3)
- and r5+c5 not in (r1+c1, r2+c2, r3+c3, r4+c4)
- and r6+c6 not in (r1+c1, r2+c2, r3+c3, r4+c4, r5+c5)
- and r7+c7 not in (r1+c1, r2+c2, r3+c3, r4+c4, r5+c5, r6+c6)
- and r8+c8 not in (r1+c1, r2+c2, r3+c3, r4+c4, r5+c5, r6+c6, r7+c7)
- --另一条斜线不同
- and r2-c2 not in (r1-c1)
- and r3-c3 not in (r1-c1, r2-c2)
- and r4-c4 not in (r1-c1, r2-c2, r3-c3)
- and r5-c5 not in (r1-c1, r2-c2, r3-c3, r4-c4)
- and r6-c6 not in (r1-c1, r2-c2, r3-c3, r4-c4, r5-c5)
- and r7-c7 not in (r1-c1, r2-c2, r3-c3, r4-c4, r5-c5, r6-c6)
- and r8-c8 not in (r1-c1, r2-c2, r3-c3, r4-c4, r5-c5, r6-c6, r7-c7)
复制代码
- (0,3) (1,1) (2,6) (3,2) (4,5) (5,7) (6,4) (7,0)
- (0,4) (1,1) (2,3) (3,6) (4,2) (5,7) (6,5) (7,0)
- (0,2) (1,4) (2,1) (3,7) (4,5) (5,3) (6,6) (7,0)
- (0,2) (1,5) (2,3) (3,1) (4,7) (5,4) (6,6) (7,0)
- (0,4) (1,6) (2,0) (3,2) (4,7) (5,5) (6,3) (7,1)
- (0,3) (1,5) (2,7) (3,2) (4,0) (5,6) (6,4) (7,1)
- (0,2) (1,5) (2,7) (3,0) (4,3) (5,6) (6,4) (7,1)
- (0,4) (1,2) (2,7) (3,3) (4,6) (5,0) (6,5) (7,1)
- (0,4) (1,6) (2,3) (3,0) (4,2) (5,7) (6,5) (7,1)
- (0,3) (1,0) (2,4) (3,7) (4,5) (5,2) (6,6) (7,1)
- (0,2) (1,5) (2,3) (3,0) (4,7) (5,4) (6,6) (7,1)
- (0,3) (1,6) (2,4) (3,2) (4,0) (5,5) (6,7) (7,1)
- (0,5) (1,3) (2,1) (3,7) (4,4) (5,6) (6,0) (7,2)
- (0,5) (1,3) (2,6) (3,0) (4,7) (5,1) (6,4) (7,2)
- (0,0) (1,6) (2,3) (3,5) (4,7) (5,1) (6,4) (7,2)
- (0,5) (1,7) (2,1) (3,3) (4,0) (5,6) (6,4) (7,2)
- (0,5) (1,1) (2,6) (3,0) (4,3) (5,7) (6,4) (7,2)
- (0,3) (1,6) (2,0) (3,7) (4,4) (5,1) (6,5) (7,2)
- (0,4) (1,7) (2,3) (3,0) (4,6) (5,1) (6,5) (7,2)
- (0,3) (1,7) (2,0) (3,4) (4,6) (5,1) (6,5) (7,2)
- (0,1) (1,6) (2,4) (3,7) (4,0) (5,3) (6,5) (7,2)
- (0,0) (1,6) (2,4) (3,7) (4,1) (5,3) (6,5) (7,2)
- (0,1) (1,4) (2,6) (3,3) (4,0) (5,7) (6,5) (7,2)
- (0,3) (1,1) (2,6) (3,4) (4,0) (5,7) (6,5) (7,2)
- (0,4) (1,6) (2,0) (3,3) (4,1) (5,7) (6,5) (7,2)
- (0,5) (1,3) (2,0) (3,4) (4,7) (5,1) (6,6) (7,2)
- (0,4) (1,0) (2,3) (3,5) (4,7) (5,1) (6,6) (7,2)
- (0,4) (1,1) (2,5) (3,0) (4,6) (5,3) (6,7) (7,2)
- (0,5) (1,2) (2,6) (3,1) (4,7) (5,4) (6,0) (7,3)
- (0,1) (1,6) (2,2) (3,5) (4,7) (5,4) (6,0) (7,3)
- (0,6) (1,2) (2,0) (3,5) (4,7) (5,4) (6,1) (7,3)
- (0,4) (1,0) (2,7) (3,5) (4,2) (5,6) (6,1) (7,3)
- (0,0) (1,4) (2,7) (3,5) (4,2) (5,6) (6,1) (7,3)
- (0,2) (1,5) (2,7) (3,0) (4,4) (5,6) (6,1) (7,3)
- (0,5) (1,2) (2,0) (3,6) (4,4) (5,7) (6,1) (7,3)
- (0,6) (1,4) (2,2) (3,0) (4,5) (5,7) (6,1) (7,3)
- (0,6) (1,2) (2,7) (3,1) (4,4) (5,0) (6,5) (7,3)
- (0,4) (1,2) (2,0) (3,6) (4,1) (5,7) (6,5) (7,3)
- (0,1) (1,4) (2,6) (3,0) (4,2) (5,7) (6,5) (7,3)
- (0,2) (1,5) (2,1) (3,4) (4,7) (5,0) (6,6) (7,3)
- (0,5) (1,0) (2,4) (3,1) (4,7) (5,2) (6,6) (7,3)
- (0,7) (1,2) (2,0) (3,5) (4,1) (5,4) (6,6) (7,3)
- (0,1) (1,7) (2,5) (3,0) (4,2) (5,4) (6,6) (7,3)
- (0,4) (1,6) (2,1) (3,5) (4,2) (5,0) (6,7) (7,3)
- (0,2) (1,5) (2,1) (3,6) (4,4) (5,0) (6,7) (7,3)
- (0,5) (1,1) (2,6) (3,0) (4,2) (5,4) (6,7) (7,3)
- (0,2) (1,6) (2,1) (3,7) (4,5) (5,3) (6,0) (7,4)
- (0,5) (1,2) (2,6) (3,1) (4,3) (5,7) (6,0) (7,4)
- (0,3) (1,1) (2,6) (3,2) (4,5) (5,7) (6,0) (7,4)
- (0,6) (1,0) (2,2) (3,7) (4,5) (5,3) (6,1) (7,4)
- (0,0) (1,5) (2,7) (3,2) (4,6) (5,3) (6,1) (7,4)
- (0,2) (1,7) (2,3) (3,6) (4,0) (5,5) (6,1) (7,4)
- (0,5) (1,2) (2,6) (3,3) (4,0) (5,7) (6,1) (7,4)
- (0,6) (1,3) (2,1) (3,7) (4,5) (5,0) (6,2) (7,4)
- (0,3) (1,5) (2,7) (3,1) (4,6) (5,0) (6,2) (7,4)
- (0,1) (1,5) (2,0) (3,6) (4,3) (5,7) (6,2) (7,4)
- (0,1) (1,3) (2,5) (3,7) (4,2) (5,0) (6,6) (7,4)
- (0,2) (1,5) (2,7) (3,1) (4,3) (5,0) (6,6) (7,4)
- (0,5) (1,2) (2,0) (3,7) (4,3) (5,1) (6,6) (7,4)
- (0,7) (1,3) (2,0) (3,2) (4,5) (5,1) (6,6) (7,4)
- (0,3) (1,7) (2,0) (3,2) (4,5) (5,1) (6,6) (7,4)
- (0,1) (1,5) (2,7) (3,2) (4,0) (5,3) (6,6) (7,4)
- (0,6) (1,1) (2,5) (3,2) (4,0) (5,3) (6,7) (7,4)
- (0,2) (1,5) (2,1) (3,6) (4,0) (5,3) (6,7) (7,4)
- (0,3) (1,6) (2,2) (3,7) (4,1) (5,4) (6,0) (7,5)
- (0,3) (1,7) (2,4) (3,2) (4,0) (5,6) (6,1) (7,5)
- (0,2) (1,4) (2,7) (3,3) (4,0) (5,6) (6,1) (7,5)
- (0,3) (1,1) (2,7) (3,4) (4,6) (5,0) (6,2) (7,5)
- (0,4) (1,6) (2,1) (3,3) (4,7) (5,0) (6,2) (7,5)
- (0,6) (1,3) (2,1) (3,4) (4,7) (5,0) (6,2) (7,5)
- (0,7) (1,1) (2,3) (3,0) (4,6) (5,4) (6,2) (7,5)
- (0,6) (1,1) (2,3) (3,0) (4,7) (5,4) (6,2) (7,5)
- (0,4) (1,0) (2,7) (3,3) (4,1) (5,6) (6,2) (7,5)
- (0,3) (1,0) (2,4) (3,7) (4,1) (5,6) (6,2) (7,5)
- (0,4) (1,1) (2,7) (3,0) (4,3) (5,6) (6,2) (7,5)
- (0,2) (1,6) (2,1) (3,7) (4,4) (5,0) (6,3) (7,5)
- (0,2) (1,0) (2,6) (3,4) (4,7) (5,1) (6,3) (7,5)
- (0,7) (1,1) (2,4) (3,2) (4,0) (5,6) (6,3) (7,5)
- (0,2) (1,4) (2,1) (3,7) (4,0) (5,6) (6,3) (7,5)
- (0,2) (1,4) (2,6) (3,0) (4,3) (5,1) (6,7) (7,5)
- (0,4) (1,1) (2,3) (3,5) (4,7) (5,2) (6,0) (7,6)
- (0,5) (1,2) (2,4) (3,7) (4,0) (5,3) (6,1) (7,6)
- (0,4) (1,7) (2,3) (3,0) (4,2) (5,5) (6,1) (7,6)
- (0,3) (1,1) (2,4) (3,7) (4,5) (5,0) (6,2) (7,6)
- (0,3) (1,5) (2,0) (3,4) (4,1) (5,7) (6,2) (7,6)
- (0,5) (1,2) (2,0) (3,7) (4,4) (5,1) (6,3) (7,6)
- (0,4) (1,2) (2,0) (3,5) (4,7) (5,1) (6,3) (7,6)
- (0,3) (1,1) (2,7) (3,5) (4,0) (5,2) (6,4) (7,6)
- (0,5) (1,2) (2,4) (3,6) (4,0) (5,3) (6,1) (7,7)
- (0,5) (1,3) (2,6) (3,0) (4,2) (5,4) (6,1) (7,7)
- (0,3) (1,6) (2,4) (3,1) (4,5) (5,0) (6,2) (7,7)
- (0,4) (1,6) (2,1) (3,5) (4,2) (5,0) (6,3) (7,7)
- 已选择92行。
- 已用时间: 00: 00: 00.02
复制代码
排重的时候,什么花哨技巧都不如老老实实的一个一个排除, 用translate/connect by 之类的方法,能慢死。
[ 本帖最后由 tree_new_bee 于 2010-12-5 15:59 编辑 ] |