SQL大赛题目:5X5方格棋盘难题

“盛拓传媒杯”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

本文出自 “不胜人生一场醉” 博客,请务必保留此出处http://baoqiangwang.blog.51cto.com/1554549/514779

查看本栏目更多精彩内容:http://www.bianceng.cn/database/basis/

时间: 2024-11-01 01:26:23

SQL大赛题目:5X5方格棋盘难题的相关文章

九度题目1529:棋盘寻宝

题目1529:棋盘寻宝 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:682 解决:306 题目描述: 现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角,请设计一个算法使其能够获得最大价值的礼物. 输入: 输入包含多个测试用例,每个测试用例共有8行8列,第i行的第j列的数字代表了该处棋盘上的礼物的价值,每两个

java源码-求这个大赛题目思路或者代码????????????

问题描述 求这个大赛题目思路或者代码???????????? ???????????????????????????????????????????????????????????????????? 解决方案 我不敢休息,因为我没有存款: 我不敢说累,因为我没有成就: 我不敢偷懒,因为我还要生活: 我能放弃选择,但是我不能选择放弃. 所以坚强,拼搏是我唯一的选择. 世上没有一件工作不辛苦, 没有一处人事不复杂. 即使你再排斥现在的不愉快, 光阴也不会过得慢点. 所以不要随意发脾气,谁都不欠你的.

三体PCC大赛题目 - facebook\微博 like场景 数据库设计与性能压测

标签 PostgreSQL , pipelinedb , facebook , 微博 , 流式统计 背景 高可用架构的一个PCC大赛,看了一下比赛规则,发现PostgreSQL很适合做这个场景,原样复刻,使用PG实现以及性能表现到底如何? 比赛内容介绍如下 https://github.com/archnotes/PCC 实现类似 facebook 中的 like 功能,需要: 可以对一个对象(一条feed.文章.或者url)进行 like 操作,禁止 like 两次,第二次 like 返回错误

一道sql面试题目

问题描述 假如有一张表,Table(id,A,B) 建了2个索引(a,b)select * from Table where a.id=''请问执行这条sql语句的时候,会查询索引吗?为什么?关键字 select ,from,where的执行顺序是什么? 解决方案 不会用到索引的.因为你的索引建立在a和b上面,如果在where 和 Order by里面都没用这2个字段,是不可能用到索引的.也就是索引只对where过滤条件,和排序Order by才起作用,通常是不会起作用的.当然,有一种特例,就是

【转载】Docker助你攻克数据库难题,原来数据库还可以这么操作!(附实操教程)

写在前面 Microsoft SQL Server 2017首次应用于Windows.Linux 和Docker 容器中.如今在容器中,您的数据库只需要花费很短的时间就可以完成安装并且不再需要其它的安装环境,使用Docker 企业版(EE)会让你的数据库交付变得更具现代化.多年来IT人员和开发人员一直享受Docker 和容器化APP所带来的这种速度和效率的优势,现在,DBAs也可以体验到这种快感了. 开启挑战 尝试登录Docker SQL Server lab(实操教程链接:https://gi

【云和恩墨大讲堂】SQL玩转AWR裸数据

编辑手记:Oracle线上嘉年华第四讲,SQL玩转AWR裸数据,教你真正利用AWR中的裸数据对系统性能进行分析并调优. 作者简介: 罗海雄 云和恩墨优化专家 ITPUB论坛数据库管理版版主,2012 ITPUB全国SQL大赛冠军得主,他还是资深的架构师和性能优化专家,对 SQL 优化和理解尤其深入:从开发到性能管理,他有着超过10年的企业级系统设计和优化经验.曾经服务于甲骨文公司,组织和主讲过多次<甲骨文技术开发人员日>和<Oracle圆桌会议>,并具备丰富的制造行业系统架构经验.

百度Astar2008程序设计大赛 中科大学子夺冠

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 日前,由全球最大的中文搜索引擎百度举办的"百度之星Astar2008程序设计大赛"在京圆满落幕.来自中国科技大学的FZK从17000多名程序设计高手中脱颖而出,勇夺"百度之星"桂冠. 本次大赛历时2个月,参赛选手包括清华.北大.复旦.香港中文大学等数十所高校,以及全国百强中学的部分高中学生,这也代表了当

细致入微 | 让 SQL 优化再多飞一会儿

第一章  细致入微 | 让 SQL 优化再多飞一会儿 云和恩墨 | 2016-04-12 20:54 怀晓明 云和恩墨性能优化专家 本文来自于本周四云和恩墨大讲堂怀晓明老师的分享. 内容:作为 DevOps 的最佳落地方式之一的 SQL 审核,如何才能做好?这是一件很有挑战性的事情,他将通过两个具体案例,来展现 SQL 审核工作如何才能做得更好,更有价值.简言之就是八个字--"细致入微,方显价值 ". 我们都知道,细致认真,可以将一件事情做得尽可能完美,在 SQL 审核与优化中,同样需

第十一届GPCT杯大学生程序设计大赛完美闭幕

刚刚过去的周六(6月7号)是今年高考的第一天,同时也是GPCT杯大学生程序设计大赛颁奖的日子,下面我们用图文再回顾一下本次大赛颁奖的过程.   评审过程的一些花絮<感谢各位评审这些天的付出!>: 感谢葡萄城给我的这次的锻炼的机会,让我学会了很多,也明白了很多!最重要的是感谢评委们!你们辛苦了! 感谢MTV-我在上嵌入式课-- 永远别忘了为你付出的人,成就永远不属于一个人.就是装也得怀有一颗谦卑感恩之心.版主大人受小弟一拜! 再次感谢品审大人,我们组还很多要改进的,到时候一定要跟各路大神好好交流