“盛拓传媒杯”SQL大赛第一期答题,
本期题目:5X5方格棋盘难题
在5X5的方格棋盘中(如图),每行、列、斜线(斜线不仅仅包括对角线)最多可以放两个球,如何摆放才能放置最多的球,这样的摆法总共有几种?输出所有的摆法。
要求:
用一句SQL实现。
输出格式:
从方格棋盘第一行至第5行,每行从第一列到第5列依次输出,0表示不放球,1表示放球。例如:1001000000000000000000000。一行输出一个行号和一个解,按解所在的列字符串顺序从大到小排序。
数据库平台:
适用Oracle、MS SQL Sever,版本(Oracle推荐10gr2(包含)以上版本、MS SQL Sever推荐2008版本)
我个人的答案如下:
--构造0、1选项
with test as
(select '1' bit from dual union select '0' from dual),
--构造每行排列组合
combostring as
(
select replace(sys_connect_by_path(bit,'#'),'#') combo
from test
where level=5
connect by level<=5
),
--把“10001”的字符串,构造成可计算的数字
combo as
(select substr(combo,1,1) b1,substr(combo,2,1) b2,substr(combo,3,1) b3,substr(combo,4,1) b4,substr(combo,5,1) b5
from combostring),
--根据题目进行逻辑求解
allcombo as
(
select c1.b1||c1.b2||c1.b3||c1.b4||c1.b5||' '||c2.b1||c2.b2||c2.b3||c2.b4||c2.b5||' '||
c3.b1||c3.b2||c3.b3||c3.b4||c3.b5||' '||c4.b1||c4.b2||c4.b3||c4.b4||c4.b5||' '||c5.b1||c5.b2||c5.b3||c5.b4||c5.b5 combo,
RANK() OVER(ORDER BY
c1.b1+c1.b2+c1.b3+c1.b4+c1.b5+ c2.b1+c2.b2+c2.b3+c2.b4+c2.b5+
c3.b1+c3.b2+c3.b3+c3.b4+c3.b5+ c4.b1+c4.b2+c4.b3+c4.b4+c4.b5+
c5.b1+c5.b2+c5.b3+c5.b4+c5.b5 DESC) RANK
from combo c1,combo c2,combo c3,combo c4,combo c5
where c1.b1+c2.b1+c3.b1+c4.b1+c5.b1<=2
and c1.b2+c2.b2+c3.b2+c4.b2+c5.b2<=2
and c1.b3+c2.b3+c3.b3+c4.b3+c5.b3<=2
and c1.b4+c2.b4+c3.b4+c4.b4+c5.b4<=2
and c1.b5+c2.b5+c3.b5+c4.b5+c5.b5<=2
and c1.b1+c1.b2+c1.b3+c1.b4+c1.b5<=2
and c2.b1+c2.b2+c2.b3+c2.b4+c2.b5<=2
and c3.b1+c3.b2+c3.b3+c3.b4+c3.b5<=2
and c4.b1+c4.b2+c4.b3+c4.b4+c4.b5<=2
and c5.b1+c5.b2+c5.b3+c5.b4+c5.b5<=2
and c1.b1+c2.b2+c3.b3+c4.b4+c5.b5<=2
and c1.b5+c2.b4+c3.b3+c4.b2+c5.b1<=2
and c1.b2+c2.b3+c3.b4+c4.b5<=2
and c2.b1+c3.b2+c4.b3+c5.b4<=2
and c1.b3+c2.b4+c3.b5<=2
and c3.b1+c4.b2+c5.b3<=2
and c1.b4+c2.b3+c3.b2+c4.b1<=2
and c2.b5+c3.b4+c4.b3+c5.b2<=2
and c1.b3+c2.b2+c3.b1<=2
and c3.b5+c4.b4+c5.b3<=2
)
--列出符合要求的记录
select
combo
from allcombo
WHERE RANK=1
分享到:
相关推荐
在"sqlserver——oracle工具"的标题中,我们关注的是在SQL Server和Oracle之间进行数据迁移的工具。常见的数据迁移工具有: 1. Oracle SQL Developer Data Pump:Oracle官方提供的免费工具,可以方便地导入导出数据...
SQL数据库——增删改查.pdf
《优化SQL语句——利用Quest Central for SQL Server来自动化你的工作》 在数据库管理领域,SQL语句的优化是提升系统性能的关键环节。为了提高生产力,减少用户因错误导致的问题,我们常常需要对SQL语句进行调整和...
该插件适用于sql sever 的每个版本,真的好用,分享出来,觉得不错的留个评论咯,谢谢
sql2005数据库的安装sql20sql2005数据库的安装05数据库的安装
sql server 数据库——shopsystem
就是我博客里写的那玩意儿的样例程序。 包括 DBHelper SqlPojo UserControl Manage Ajax.aspx Test.mdf index.html 开发环境:VisualStudio2013
重算库存成本,试用于财贸双全系列。当库存总体不对时,执行此补丁
主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL.MS sql server oracle 和DB2中的差异分析,详细讲解数据库的高级编程
此程序基于学生选课的实例,通过学生在修改其选课记录的事件引起了触发器。 次资源包含完整的数据库文件。。。
数据库
我之前上传的SQL测试题目的答案--没做不要看哦!哈哈
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数...
【SQL结构化查询语言详解】 SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准语言,它的功能强大,其中聚合分析是统计和分析数据的核心部分。本篇将深入讲解SQL中的聚合函数及其应用。 **...
一个方便的sql格式化工具——SQL Pretty Printer 2.8.7 内包含破解文件和破解方法
《SQL for Palm——移动设备编程项目》是一本专注于在Palm设备上进行SQL数据库编程的指导书籍。在当今数字化时代,移动设备已经成为我们日常生活和工作中不可或缺的一部分,而SQL作为关系型数据库管理的语言,其在...
综上所述,"C# .NET MVC ——Easyui+PetaPoco+sqlserver数据库——理财后台管理系统"的构建涉及到Web开发的多个层面,包括前端设计、后端逻辑以及数据库操作。通过合理利用这些技术,可以创建出功能强大、易于维护的...
《信息系统开发教程——使用C#和SQL Server 2005》是一份深入探讨如何结合C#编程语言与Microsoft SQL Server 2005数据库管理系统进行信息系统开发的教程。本教程旨在帮助开发者全面掌握这两项关键技术,从而构建高效...
该资源是基于SQL Server设计的企业管理上的一款人事管理系统,该系统包括五个部分:需求分析、概念结构和逻辑结构设计、数据库的设计、触发器设计、总结反思等,通过需求分析,实体图,进而画出相应的E-R图,以及...
SQL注入测试.zip 具体操作步骤和说明文档。