“盛拓传媒杯”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
分享到:
相关推荐
SQL数据库——增删改查.pdf
《优化SQL语句——利用Quest Central for SQL Server来自动化你的工作》 在数据库管理领域,SQL语句的优化是提升系统性能的关键环节。为了提高生产力,减少用户因错误导致的问题,我们常常需要对SQL语句进行调整和...
LayUI+.net_MVC+SqlServer——高校维修系统System.zip_UniversityLogisticsMaintenanceSystem
该插件适用于sql sever 的每个版本,真的好用,分享出来,觉得不错的留个评论咯,谢谢
实验5 sql语句练习——图书馆数据库.docx
sql server 数据库——shopsystem
就是我博客里写的那玩意儿的样例程序。 包括 DBHelper SqlPojo UserControl Manage Ajax.aspx Test.mdf index.html 开发环境:VisualStudio2013
重算库存成本,试用于财贸双全系列。当库存总体不对时,执行此补丁
主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL.MS sql server oracle 和DB2中的差异分析,详细讲解数据库的高级编程
【漫画SQL——mysql 必修课】是一门以轻松易懂的漫画形式讲解MySQL数据库基础的视频课程。针对初学者,这门课程旨在通过生动有趣的方式帮助学习者掌握SQL语言和MySQL数据库管理系统的基础知识,为日后的数据分析、...
数据库
从零开始学SQL-Server——初识SQL-Server.pptx
我之前上传的SQL测试题目的答案--没做不要看哦!哈哈
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数...
【SQL结构化查询语言详解】 SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准语言,它的功能强大,其中聚合分析是统计和分析数据的核心部分。本篇将深入讲解SQL中的聚合函数及其应用。 **...
在"STRUTS——SQL添加删除"这个主题中,我们将深入探讨如何使用Struts框架来处理SQL数据库中的数据添加和删除操作。在Web开发中,这样的功能是至关重要的,因为它们构成了应用程序的基本交互。 1. **Struts框架基础...
综上所述,"C# .NET MVC ——Easyui+PetaPoco+sqlserver数据库——理财后台管理系统"的构建涉及到Web开发的多个层面,包括前端设计、后端逻辑以及数据库操作。通过合理利用这些技术,可以创建出功能强大、易于维护的...
SQL注入测试.zip 具体操作步骤和说明文档。
《图书馆管理系统——基于VS2017、C#与SQLServer的实现》 图书馆管理系统是信息化建设中的一个重要组成部分,它能够高效地管理图书资源,提供便捷的借阅、归还和人员管理服务。本系统采用Microsoft Visual Studio ...
根据给定的信息,本文将详细解释如何通过SQL来实现国际象棋中的“马踏棋盘”问题,并且针对具体的代码片段进行深入分析。 ### SQL 实现马踏棋盘 #### 背景介绍 “马踏棋盘”是计算机科学中的一个经典问题,其目的...