用sql模拟:有12支乒乓球,其中一只是假的,其余的是真的,用天平秤来称重,你能用此天平秤秤3次

美到心痛 2014-05-22 05:57:36
有12支乒乓球,其中一只是假的,其余的是真的,用天平秤来称重,你能用此天平秤秤3次,就能分出哪一只乒乓球是假的?假乒乓球比真的轻还是重?
以下用sql模拟一下,期待更好的方法:

--建测试表
select * into test
from ( select case when number=1 then 1 else 2 end a,
case when number=2 then 1 else 2 end b,
case when number=3 then 1 else 2 end c,
case when number=4 then 1 else 2 end d,
case when number=5 then 1 else 2 end e,
case when number=6 then 1 else 2 end f,
case when number=7 then 1 else 2 end g,
case when number=8 then 1 else 2 end h,
case when number=9 then 1 else 2 end i,
case when number=10 then 1 else 2 end j,
case when number=11 then 1 else 2 end k,
case when number=12 then 1 else 2 end l
from master..spt_values
where type='P' and number>0 and number<=12
union all
select case when number=1 then 3 else 2 end a,
case when number=2 then 3 else 2 end b,
case when number=3 then 3 else 2 end c,
case when number=4 then 3 else 2 end d,
case when number=5 then 3 else 2 end e,
case when number=6 then 3 else 2 end f,
case when number=7 then 3 else 2 end g,
case when number=8 then 3 else 2 end h,
case when number=9 then 3 else 2 end i,
case when number=10 then 3 else 2 end j,
case when number=11 then 3 else 2 end k,
case when number=12 then 3 else 2 end l
from master..spt_values
where type='P' and number>0 and number<=12) a

--查询
select case when a+b+c+d>e+f+g+h then --第1步
case when a+i+j+k>e+b+c+d --第2步
then
case when a!=i then ('a重') --第3步
when a=i then ('e轻') end
when a+i+j+k=e+b+c+d --第2步
then
case when f>g then ('g轻') --第3步
when f=g then ('h轻')
when f<g then ('f轻') end
when a+i+j+k<e+b+c+d --第2步
then
case when b>c then ('b重') --第3步
when b=c then ('d重')
when b<c then ('c重') end end
when a+b+c+d=e+f+g+h --第1步
then
case when a+i+j+k>e+b+c+d --第2步
then
case when i>j then ('i重') --第3步
when i=j then ('k重')
when i<j then ('j重') end
when a+i+j+k=e+b+c+d --第2步
then
case when a>l then ('l轻') --第3步
when a<l then ('l重') end
when a+i+j+k<e+b+c+d --第2步
then
case when i>j then ('j轻') --第3步
when i=j then ('k轻')
when i<j then ('i轻') end end
when a+b+c+d<e+f+g+h --第1步
then
case when a+i+j+k>e+b+c+d --第2步
then
case when b>c then ('c轻') --第3步
when b=c then ('d轻')
when b<c then ('b轻') end
when a+i+j+k=e+b+c+d --第2步
then
case when f>g then ('f重') --第3步
when f=g then ('h重')
when f<g then ('g重') end
when a+i+j+k<e+b+c+d --第2步
then
case when a!=i then ('a轻') --第3步
when a=i then ('e重') end end end,*
from test
/*
a轻 1 2 2 2 2 2 2 2 2 2 2 2
b轻 2 1 2 2 2 2 2 2 2 2 2 2
c轻 2 2 1 2 2 2 2 2 2 2 2 2
d轻 2 2 2 1 2 2 2 2 2 2 2 2
e轻 2 2 2 2 1 2 2 2 2 2 2 2
f轻 2 2 2 2 2 1 2 2 2 2 2 2
g轻 2 2 2 2 2 2 1 2 2 2 2 2
h轻 2 2 2 2 2 2 2 1 2 2 2 2
i轻 2 2 2 2 2 2 2 2 1 2 2 2
j轻 2 2 2 2 2 2 2 2 2 1 2 2
k轻 2 2 2 2 2 2 2 2 2 2 1 2
l轻 2 2 2 2 2 2 2 2 2 2 2 1
a重 3 2 2 2 2 2 2 2 2 2 2 2
b重 2 3 2 2 2 2 2 2 2 2 2 2
c重 2 2 3 2 2 2 2 2 2 2 2 2
d重 2 2 2 3 2 2 2 2 2 2 2 2
e重 2 2 2 2 3 2 2 2 2 2 2 2
f重 2 2 2 2 2 3 2 2 2 2 2 2
g重 2 2 2 2 2 2 3 2 2 2 2 2
h重 2 2 2 2 2 2 2 3 2 2 2 2
i重 2 2 2 2 2 2 2 2 3 2 2 2
j重 2 2 2 2 2 2 2 2 2 3 2 2
k重 2 2 2 2 2 2 2 2 2 2 3 2
l重 2 2 2 2 2 2 2 2 2 2 2 3
*/
...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2014-05-23
  • 打赏
  • 举报
回复
请问这是ACM程序设计比赛的题目吗?
software_artisan 2014-05-23
  • 打赏
  • 举报
回复
这个不能用二分法吧
美到心痛 2014-05-23
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
基本上二分法就这样了吧。用SQL来作还是不太合适。
这中间有些推理的部分,是人推出来的,如果是程序推出来的就好了.
--小F-- 2014-05-23
  • 打赏
  • 举报
回复
基本上二分法就这样了吧。用SQL来作还是不太合适。
t101lian 2014-05-22
  • 打赏
  • 举报
回复
mark ...
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧