《编程珠玑》读解 一
《编程珠玑》读解 一
- 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)相符。
《编程珠玑》读解 一相关推荐
- 《读编程珠玑有感》——细节处见技术
<读编程珠玑有感>--细节处见技术 众所周知,<编程珠玑>是一本程序员的必读图书,作为一名程序员的我,当然不能错过. 最近粗读了两遍,最大的感受就是,这是一本值得逐字逐句推敲学 ...
- 【编程珠玑】陪着奶猫看看书--《编程珠玑》第一章
陪着奶猫看看书–<编程珠玑>第一章 首先说说小奶猫我为什么要读<编程珠玑>这本神作,当年小奶猫刚刚进入大学时候是个纯洁的少年,啥都不懂,要是哪个女生下午在外面问我带身份证没有, ...
- 编程珠玑第12章习题
内容来自互联网,做了一些修改 参考: http://blog.csdn.net/tianshuai1111/article/details/7583297 http://blog.csdn.net/t ...
- 编程珠玑读书笔记之磁盘文件排序
输入: 所输入的是一个文件,至多包含n个正整数,每个正整数都要小于n,这是 n = 10^7.如果输入时某个整数出现了两次,就会产生一个致命的错误.这些整数与其他任何数据都不关联. 输出: 以增序形式 ...
- 《编程珠玑(续)(修订版)》—第2章2.1节Awk中的关联数组
本节书摘来自异步社区<编程珠玑(续)(修订版)>一书中的第2章,第2.1节Awk中的关联数组,作者[美]Jon Bentley,更多章节内容可以访问云栖社区"异步社区" ...
- mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...
- 《编程珠玑,字字珠玑》45678读书笔记——编程技巧
写在最前面的 就像上一篇文章说的,"编程永远是后话"!在有了可靠的问题分析过程和数据结构的选择,能正确运行的"二分搜索"代码出现之前,把其主要的思路先在草稿上实 ...
- C++ 纯WIN32 API编程 悦读器实战示例
/* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...
- 看完编程珠玑的一些感想
终于看完Jon Bentley先生著作的<编程珠玑·第二版>了,当然,我看的是中文版,英文水平哪有那么好啊... 这是一本不可多得的好书,具体好在哪里,我也不太能说清楚.应该算是思路上给我 ...
- linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解
<Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...
最新文章
- 在线机房改造类项目建设难点的研究
- PHP网站开启gzip压缩,php中开启gzip压缩的2种方法代码
- 盘点 20多种基本Java库和API,值得收藏!
- Flowable 数据库表结构 ACT_RE_PROCDEF
- 一个java文件里面可以写多少个class
- res.data.data_在Data.gov进行幕后推销
- java stringbuilder清空_Java中StringBuilder的清空方法比较
- go语言slice使用的时候遇到的奇怪现象以及分析
- AndroidStudio使用XmlPullParser解析xml文件
- 思科防火墙syslog 配置
- fork、vfork、clone 三者的区别
- 技术管理者工作成效评估表
- 【使用最新版本的cef,编译libcef_dll_wrapper】
- android 华为摄像头权限_Android踩坑日记(一):android7.0动态相机权限
- FPGA与ASIC对比
- android抽屉式listview,Android 抽屉效果的导航菜单实现
- 数字图像处理11:阈值分割(基本全局阈值处理,Otsu 的最佳全局阈值,图像平滑改善全局阈值处理,图像分块的可变阈值)
- java克隆实现_JAVA里的深克隆与浅克隆实现
- kindle版java核心_深入理解java 7 核心技术与最佳实践-成富[6寸pdf mobi epub kindle版].pdf...
- unicode 和 GB2312 编码对应表
热门文章
- ESP8285调试 IOT_Demo
- JDK11.0.9-windows64下载
- java学科竞赛管理系统_《高校学科竞赛管理系统的web前端设计与实现》文献阅读随笔...
- SSO —— 单点登录CAS与OAuth2
- 数字人民币渐行渐近丨2021中国区块链产业发展报告
- 代码实现抖音时钟罗盘
- 斐讯T1刷机详细指南
- UltraEdit Crack,完全集成的编辑和数据管理工具
- Mock 入门,分析stub . mock区别
- MATLAB(五) 图像处理--图像分割