《编程珠玑》读解 一

  • 1. 需求分析

1. 需求分析

对于一个问题,往往要分析两层面的需求:

  • 表需求:题目直接给出的。
  • 里需求:对表需求进一步分析得出的问题本质

感觉两者差不多?其实不然,从对于表需求的分析得到里需求的过程,是十分关键的。我个人称之为一种不择手段的解决问题方式。所谓“不择手段”,是指在表需求确定的情况下,通过尽可能多地删除非本质条件而得到里需求

之所以要得到里需求,是因为仅依赖表需求,很可能造成目标不明确,没有思路。

得到里需求的方法:

  • 划分子问题
  • 缩小规模

举个例子:
两个完全相同的桶,100个红球、黑球。将红球和黑球以任意方式(数量可以不等)放入,使得一个人抓一次得到红球的期望值最大,设计该放入方式。

在初次考虑这个问题时,我受到了两点迷惑:两个完全相同的桶,只抽一次。但事实上,进行简单的概率计算即可知道红黑放入方式不同会造成影响:红球期望=0.5×(一号桶红球概率+二号桶红球概率),假设一号桶放1红3黑,其余的放二号桶,则0.5×(0.25+0.505)=0.378。同理,如果一号桶放3红1黑,则0.5×(0.75+0.495)=0.622。可见,可以通过在总球数少的桶中增大红球比例来达到最优,最好情况是1个红球在一号桶,其余在二号桶。

换一个角度考虑,讲该问题泛化为n个红、黑球放入两个桶中的情况。n=1时,本质上只有“放一起”和“不放一起”两种,放一起0.5×(0+0.5)=0.25,不放一起是0.5。n=2时,可以每个桶放2个,也可以1+3,为了使抽到红球可能性大,放1个球的桶放的是红球,此时概率为0.5×(1+1/2)=0.75。依据这些经验,可以得到策略:放1个红球在一号桶,而其余所有放二号桶。这样与之前的在总球数少(令其为最少的1个球)的桶中最大化红球比例(为1)相符。

《编程珠玑》读解 一相关推荐

  1. 《读编程珠玑有感》——细节处见技术

    <读编程珠玑有感>--细节处见技术 众所周知,<编程珠玑>是一本程序员的必读图书,作为一名程序员的我,当然不能错过. 最近粗读了两遍,最大的感受就是,这是一本值得逐字逐句推敲学 ...

  2. 【编程珠玑】陪着奶猫看看书--《编程珠玑》第一章

    陪着奶猫看看书–<编程珠玑>第一章 首先说说小奶猫我为什么要读<编程珠玑>这本神作,当年小奶猫刚刚进入大学时候是个纯洁的少年,啥都不懂,要是哪个女生下午在外面问我带身份证没有, ...

  3. 编程珠玑第12章习题

    内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...

  4. 编程珠玑读书笔记之磁盘文件排序

    输入: 所输入的是一个文件,至多包含n个正整数,每个正整数都要小于n,这是 n = 10^7.如果输入时某个整数出现了两次,就会产生一个致命的错误.这些整数与其他任何数据都不关联. 输出: 以增序形式 ...

  5. 《编程珠玑(续)(修订版)》—第2章2.1节Awk中的关联数组

    本节书摘来自异步社区<编程珠玑(续)(修订版)>一书中的第2章,第2.1节Awk中的关联数组,作者[美]Jon Bentley,更多章节内容可以访问云栖社区"异步社区" ...

  6. mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解

    01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...

  7. 《编程珠玑,字字珠玑》45678读书笔记——编程技巧

    写在最前面的 就像上一篇文章说的,"编程永远是后话"!在有了可靠的问题分析过程和数据结构的选择,能正确运行的"二分搜索"代码出现之前,把其主要的思路先在草稿上实 ...

  8. C++ 纯WIN32 API编程 悦读器实战示例

    /* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...

  9. 看完编程珠玑的一些感想

    终于看完Jon Bentley先生著作的<编程珠玑·第二版>了,当然,我看的是中文版,英文水平哪有那么好啊... 这是一本不可多得的好书,具体好在哪里,我也不太能说清楚.应该算是思路上给我 ...

  10. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

最新文章

  1. 在线机房改造类项目建设难点的研究
  2. PHP网站开启gzip压缩,php中开启gzip压缩的2种方法代码
  3. 盘点 20多种基本Java库和API,值得收藏!
  4. Flowable 数据库表结构 ACT_RE_PROCDEF
  5. 一个java文件里面可以写多少个class
  6. res.data.data_在Data.gov进行幕后推销
  7. java stringbuilder清空_Java中StringBuilder的清空方法比较
  8. go语言slice使用的时候遇到的奇怪现象以及分析
  9. AndroidStudio使用XmlPullParser解析xml文件
  10. 思科防火墙syslog 配置
  11. fork、vfork、clone 三者的区别
  12. 技术管理者工作成效评估表
  13. 【使用最新版本的cef,编译libcef_dll_wrapper】
  14. android 华为摄像头权限_Android踩坑日记(一):android7.0动态相机权限
  15. FPGA与ASIC对比
  16. android抽屉式listview,Android 抽屉效果的导航菜单实现
  17. 数字图像处理11:阈值分割(基本全局阈值处理,Otsu 的最佳全局阈值,图像平滑改善全局阈值处理,图像分块的可变阈值)
  18. java克隆实现_JAVA里的深克隆与浅克隆实现
  19. kindle版java核心_深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf...
  20. unicode 和 GB2312 编码对应表

热门文章

  1. ESP8285调试 IOT_Demo
  2. JDK11.0.9-windows64下载
  3. java学科竞赛管理系统_《高校学科竞赛管理系统的web前端设计与实现》文献阅读随笔...
  4. SSO —— 单点登录CAS与OAuth2
  5. 数字人民币渐行渐近丨2021中国区块链产业发展报告
  6. 代码实现抖音时钟罗盘
  7. 斐讯T1刷机详细指南
  8. UltraEdit Crack,完全集成的编辑和数据管理工具
  9. Mock 入门,分析stub . mock区别
  10. MATLAB(五) 图像处理--图像分割