本期题目:
问题1(80分):
在一个6*6的棋盘中,放置12个球,每行、每列、每个正负45度的斜线上最多放置2个球,请用一个SQL语句(不可以用PL/SQL或T-SQL匿名块、过程或函数,也不可以用Java等外部语言)求出不“重复”的摆法的个数(剔除上下对称、左右对称、中心对称,沿中心点旋转等各种变形)
如下是4*4矩阵的几种变形
原始排列
ABCD
EFGH
IJKL
MNOP
左右翻转
DCBA
HGFE
LKJI
PONM
上下翻转
MNOP
IJKL
EFGH
ABCD
中心旋转180度
PONM
LKJI
HGFE
DCBA
沿左上右下对角线翻转
AEIM
BFJN
CGKO
DHLP
沿左下右上对角线翻转
PLHD
OKGC
NJFB
MIEA
中心顺时针旋转90度
MIEA
NJFB
OKGC
PLHD
中心逆时针旋转90度
DHLP
CGKO
BFJN
AEIM
――――――――――――――――――――――――――――――――――――――――――――――――――――――――
问题2(40分):
在一个N*N的棋盘中,每行放置M个球,每列、每个45度的斜线上最多放置M个球,其中5<=N<=6,1<=M<=(N-1),现要求出每个M,N组合中最多摆放球的不同的摆法的个数(包括重复和不重复的,分别输出)。请用最多两条SQL语句得到以下结果:(以M=2, N=5为例)
两条SQL的输出格式:
[Copy to clipboard] [ - ]
CODE:
SQL1:
M N AllCnt
2 5 92 --上期的结果总数是92,您答对了吗?
SQL2:
M N NoReptCnt
2 5 xx
一条SQL的输出格式:
[Copy to clipboard] [ - ]
CODE:
M N AllCnt NoReptCnt
2 5 92 xx
Oracle变量定义如下(以M=2, N=5为例):
var m number;
exec :m:=2;
var n number;
exec :n:=5;
MS SQL Server变量定义如下(以M=2, N=5为例):
declare @n int,@m int;
set @n=5;
set @m=2;
扩展题的执行方式最好如下:
set timing on
exec :m:=2;
exec :n:=5;
@sql2-leitaisai.sql
――――――――――――――――――――――――――――――――――――――――――――――
书写格式:仅包含一个查询语句(可以有子查询)和必要的注释(用/* */括起),不得包含创建表、视图、索引和插入、更新、删除等语句。
输出格式:问题1输出一个整数
问题2输出见题目说明
数据库平台:适用Oracle、MS SQL Server,版本(Oracle推荐10gr2(包含)以上版本、MS SQL Sever推荐2008版本)
提交的答案:
第一题:
--ITPUB“盛拓传媒杯”SQL数据库编程大赛第二期,第1题
--Oracle9.2.0.1运行通过
with t as
(select 0 c1 from dual union all
select 1 from dual),
--行排列组合
a as
(select /*+ordered */ a1.c1 c1,a2.c1 c2,a3.c1 c3,a4.c1 c4,a5.c1 c5,a6.c1 c6
from t a1, t a2, t a3, t a4, t a5,t a6
where a1.c1+a2.c1+a3.c1+a4.c1+a5.c1+a6.c1=2)
select count(*) AllCnt,--所有的组合
count(distinct greatest(s1,s2,s3,s4,s5,s6,s7,s8)) NoReptCnt --去重后的组合
from (
select /*+ordered */
r1.c1||r1.c2||r1.c3||r1.c4||r1.c5||r1.c6
||r2.c1||r2.c2||r2.c3||r2.c4||r2.c5||r2.c6
||r3.c1||r3.c2||r3.c3||r3.c4||r3.c5||r3.c6
||r4.c1||r4.c2||r4.c3||r4.c4||r4.c5||r4.c6
||r5.c1||r5.c2||r5.c3||r5.c4||r5.c5||r5.c6
||r6.c1||r6.c2||r6.c3||r6.c4||r6.c5||r6.c6
s1,
--以下为阵列的旋转变形
r6.c1||r6.c2||r6.c3||r6.c4||r6.c5||r6.c6
||r5.c1||r5.c2||r5.c3||r5.c4||r5.c5||r5.c6
||r4.c1||r4.c2||r4.c3||r4.c4||r4.c5||r4.c6
||r3.c1||r3.c2||r3.c3||r3.c4||r3.c5||r3.c6
||r2.c1||r2.c2||r2.c3||r2.c4||r2.c5||r2.c6
||r1.c1||r1.c2||r1.c3||r1.c4||r1.c5||r1.c6
s2,
r1.c6||r1.c5||r1.c4||r1.c3||r1.c2||r1.c1
||r2.c6||r2.c5||r2.c4||r2.c3||r2.c2||r2.c1
||r3.c6||r3.c5||r3.c4||r3.c3||r3.c2||r3.c1
||r4.c6||r4.c5||r4.c4||r4.c3||r4.c2||r4.c1
||r5.c6||r5.c5||r5.c4||r5.c3||r5.c2||r5.c1
||r6.c6||r6.c5||r6.c4||r6.c3||r6.c2||r6.c1
s3,
r6.c6||r6.c5||r6.c4||r6.c3||r6.c2||r6.c1
||r5.c6||r5.c5||r5.c4||r5.c3||r5.c2||r5.c1
||r4.c6||r4.c5||r4.c4||r4.c3||r4.c2||r4.c1
||r3.c6||r3.c5||r3.c4||r3.c3||r3.c2||r3.c1
||r2.c6||r2.c5||r2.c4||r2.c3||r2.c2||r2.c1
||r1.c6||r1.c5||r1.c4||r1.c3||r1.c2||r1.c1
s4,
r1.c1||r2.c1||r3.c1||r4.c1||r5.c1||r6.c1
||r1.c2||r2.c2||r3.c2||r4.c2||r5.c2||r6.c2
||r1.c3||r2.c3||r3.c3||r4.c3||r5.c3||r6.c3
||r1.c4||r2.c4||r3.c4||r4.c4||r5.c4||r6.c4
||r1.c5||r2.c5||r3.c5||r4.c5||r5.c5||r6.c5
||r1.c6||r2.c6||r3.c6||r4.c6||r5.c6||r6.c6
s5,
r1.c6||r2.c6||r3.c6||r4.c6||r5.c6||r6.c6
||r1.c5||r2.c5||r3.c5||r4.c5||r5.c5||r6.c5
||r1.c4||r2.c4||r3.c4||r4.c4||r5.c4||r6.c4
||r1.c3||r2.c3||r3.c3||r4.c3||r5.c3||r6.c3
||r1.c2||r2.