“盛拓传媒杯”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大赛——5X5方格棋盘难题相关推荐

  1. 直播丨 SQL大赛冠军怀晓明:深入解析Oracle存储过程中的性能瓶颈

    活动详情 在DBA日常工作中,经常会有这样的疑惑: 存储过程的性能瓶颈分析,仅仅靠优化一条SQL就可以解决吗? 批量操作为王的说法一定正确吗? 为什么我这样写的SQL性能就不好? 如何通过性能剖析工具 ...

  2. 吉首大学第八届“新星杯”大学生程序设计大赛 K: WaWa的难题(找规律)

    [题目] WaWa的难题 题目描述 HaHa和WaWa是好朋友,他们在临近期末的这段时间一起宅在图书馆学习. 今天HaHa在书上看到一个排列组合题目,思考很久后,仍然找不出其中的规律. 于是他把题目叙 ...

  3. linq to sql 行转列_SQL 难题:行转列

    问题:有一张学生成绩表sc(sid 学号,cid 课程,score 成绩),请查询出每个学生的英语.数学的成绩(行转列,一个学生只有一行记录). 建表语句: create 实现方式1--join 这种 ...

  4. SQL数据库编程大赛(第二期)

    本期题目:问题1(80分):     在一个6*6的棋盘中,放置12个球,每行.每列.每个正负45度的斜线上最多放置2个球,请用一个SQL语句(不可以用PL/SQL或T-SQL匿名块.过程或函数,也不 ...

  5. 干货分享丨高效SQL语句编写-Oracle Code 2019中云和恩墨CTO杨廷琨的分享

    导读:Oracle Code 2019 开发者大会于4月16日在深圳举行,这是甲骨文公司在中国举办的第三届Oracle Code 开发者大会.大会主要面向IT架构师和开发人员,旨在帮助开发人员深入了解 ...

  6. P2774 方格取数问题

    题目背景 none! 题目描述 在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法.对于 ...

  7. 734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流

    «问题描述: 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任 意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. «编程任务: 对于给定 ...

  8. codevs 1907 方格取数 3

    Description 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. Input 第 ...

  9. 【网络流24题----09】方格取数问题

    «问题描述: 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任 意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. «编程任务: 对于给定 ...

最新文章

  1. 学术 | 据说以后在探头下面用帽子挡脸没用了:用于遮挡物检测的对称卷积神经网络——SymmNet...
  2. JavaScript 的面向对象编程
  3. ASP.NET的SEO:HTTP报头状态码---内容重定向
  4. reactjs组件优化:setState的反复render问题
  5. write up::web 实战2-注入 --sqlmap注入版
  6. 真不好意思,让你贱笑了
  7. 使用Python迭代字符串中的每个字符
  8. 塔米狗分享|2022年企业并购创新的融资方式有哪些
  9. webstorm打开项目不显示文件夹
  10. 蓝桥杯python组一个星期备战记录贴
  11. 【论文阅读】2021年牛津大学的 Survey:Recent Advances in Reinforcement Learning in Finance
  12. Typroa+picgo+github出现RequestError: Error: unable to verify the first certificate (未解决)
  13. 5. PHP 输出图像 imagegif 、imagejpeg 与 imagepng 函数
  14. javascript轮播技术
  15. 使用jdbc创建一张员工表 员工表字段:编号,姓名,性别,年龄,职位,邮箱,电话
  16. 51单片机最全入门总结
  17. 防孤岛保护装置在光伏行业的应用
  18. 直流稳压电源的分类以及特点
  19. 25TB不限速网盘免费注册,走过路过不要错过
  20. 怎么把图片转成gif动图?

热门文章

  1. ZooKeeper 3.4.5 分布式环境搭建
  2. qcow2磁盘格式分析
  3. 微服务难点剖析 | 服务拆的挺爽,问题是日志该怎么串联起来呢?
  4. Go Web编程--应用ORM
  5. 服务器端系统饼图,服务器 操作系统 饼图
  6. springboot 历史版本文档_这个男人练了整整二年的SpringBoot看他如何教你学学学!...
  7. 关于Stop The World的几个问题
  8. Nginx常用配置清单
  9. Docker使用Dockerfile构建镜像
  10. Acoustic Echo Cancellation (AEC) 回音消除技术探索