这是一道“咖啡罐问题”,一个盛装一些黑豆和白豆的咖啡罐,然后重复一下过程,直到罐中只剩下一粒豆子为止:
随机从罐中选择两粒豆子。如果他们的颜色相同,就将它们都扔掉,并且在罐中放入一粒额外的黑豆。如果他们的颜色既有白色也有黑色,则将白豆返回罐中,同时扔掉黑豆。我们可以很容易的证明最后罐中会剩下一粒豆子,因为每次我们都会从罐中取走一粒种子。仔细观察,我们发现,每次操作相当于两种操作:1、取出两粒白豆 2、取出一粒白豆。由此可见,当白豆原有奇数时,最后剩下的就是白豆。偶数的话,剩下的就是黑豆。
写了一个模拟程序,给定豆子数以及白色豆子的个数,随机取豆操作,直至剩下最后一粒豆子:
void WhiteBlack(int coffee[])
{
//operation
int col1,col2;
while (!OnlyOne(coffee))
{
col1 = TakingOne(coffee);
col2 = TakingOne(coffee);
cout<<col1<<'\t'<<col2<<endl;
if (col1 == col2) PutingInOne(coffee,2); //the same color,put into a black one
else PutingInOne(coffee,1); //remain the white one
}
cout<<"ok"<<endl;
}
TakingOne()和 PutingInOne()是随机选取豆子和放入豆子。OnlyOne()则是判断当前咖啡罐是否只剩下一个豆子。
本章就到此结束,主要是对程序进行验证,写断言好像哈不太习惯,不过assert对程序的理解和维护都很重要的,自己都是些注释比较习惯。此外,花了大概一个小时写了一个二分查找程序,还好,程序没错,就是不够优美,把最后一次比较提取出判断了,导致程序代码重复,多写了5~6行冗余代码。对边界的把握还有待提高。
分享到:
相关推荐
"第二章questionC"提及的问题是关于"求变位词",这是一个常见的字符串处理问题,涉及到字符统计、排序以及字符串比较等基础知识。 变位词,又称为同字母异序词,是指两个或多个单词由完全相同的字母组成,但字母...
《编程珠玑 第2版(修订版)》是一本深受程序员喜爱的经典著作,它不仅提供了丰富的编程实践经验,还深入探讨了程序设计的艺术与智慧。这本书的修订版更是在原版基础上进行了更新和完善,旨在帮助程序员提升编程技能,...
《编程珠玑》是计算机科学领域的一本经典之作,作者Jon Bentley通过一系列实际问题的探讨,引导读者理解和掌握编程中的高效解题技巧。书中的问题和解决方案涵盖了算法设计、数据结构优化以及问题解决策略等多个方面...
另一个重要主题是程序性能的优化。《编程珠玑》强调,优化不仅仅是关于速度,而是关于理解代码的运作方式和它对系统资源的影响。书中通过实际案例解释了如何通过分析和重构代码来减少内存消耗,提高程序响应速度,...
第4章 自描述数据 33 4.1 名字—值对 33 4.2 记录来历 36 4.3 排序实验 37 4.4 原理 39 4.5 习题 39 第二部分 实 用 技 巧 第5章 劈开戈尔迪之结 43 5.1 小测验 43 5.2 解答 44 5.3 提示 44 5.4 原理 47 5.5 习题 48...
《编程珠玑》是计算机科学领域的一本经典之作,由Jon Bentley 编著,它以其深入浅出的方式探讨了程序设计的问题和...同时,这也是一个很好的机会去学习如何分析和调试他人编写的代码,这对于提升编程能力是非常有益的。
根据提供的标题“编程珠玑(第二版)答案”和描述“编程珠玑(第二版)答案”,我们可以推测出这是关于《编程珠玑》这本书的相关解答资料。《编程珠玑》是一本经典的计算机科学书籍,作者为Jon Bentley。本书旨在...
《编程珠玑》和其续篇是两部深受程序员喜爱的经典著作,主要涵盖了程序设计、算法分析和数据结构等核心编程领域。这两本书以其深入浅出的讲解方式和丰富的实例,帮助读者提升编程技巧和解决问题的能力。 在《编程...
《编程珠玑(续)》是计算机...书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,如一串串珠玑展示给程序员。 《编程珠玑(续)》适合各级程序员阅读参考。
《编程珠玑》是计算机科学领域的一本经典之作,作者是Jon Bentley,它以其独特的视角和深入浅出的讲解方式,向读者展示了编程艺术的精髓。这本书的第二版更是深受程序员和计算机科学家们的喜爱,因为它不仅涵盖了...
6. **程序设计思想**:《编程珠玑》提倡模块化设计、代码复用和抽象思维,鼓励程序员以更高级别的视角看待问题,而不是陷入低级实现的细节中。 7. **编程实践**:除了理论知识,本书也提供了丰富的实例,让读者能够...
1. **column4.cpp**: 第四章可能关注的是排序和搜索问题。在编程珠玑中,Bentley讨论了如何有效地进行二分查找,并提出了在大型数据集上优化搜索的方法,如跳跃查找(Skip List)或位向量(Bit Vector)技术。 2. *...
每一章都会围绕一个具体的编程挑战展开论述,如“最小生成树”、“单词统计”等。这些案例不仅让理论变得生动有趣,还能帮助读者将所学知识应用到实践中去。通过对这些案例的学习,读者能够深刻理解解决问题的不同...
第4章 编写正确的程序 33 4.1 二分搜索的挑战 33 4.2 编写程序 34 4.3 理解程序 36 4.4 原理 38 4.5 程序验证的角色 39 4.6 习题 40 4.7 深入阅读 42 第5章 编程小事 43 5.1 从伪代码到C程序 43 5.2 测试...
编程珠玑续、编程珠玑续本、编程珠玑续本、编程珠玑续本
这本书的第二版中文PDF和源代码的提供,为中国的程序员和计算机科学爱好者提供了一个宝贵的自学资源。 《编程珠玑》的核心内容围绕着数据结构、算法优化以及问题解决策略展开。书中的每个章节都精心设计了一组编程...
优化程序是编程珠玑中的一大主题,如何优化程序来提高效率是一个非常重要的问题。在这篇笔记中,我们讨论了如何优化程序来打印出小于 10000 的素数。首先,我们从 2 开始到 n-1 都不能整除则为素数,这是一个基本的...
《编程珠玑第二版英文版》是一本深受程序员喜爱的经典著作,由Jon Bentley 所著。这本书以其深入浅出的方式探讨了程序设计的艺术,通过一系列精心挑选的问题和解决方案,揭示了编程中的智慧与技巧。书中的每个章节都...
《编程珠玑》的PDF版本包含了原书的所有内容,包括示例代码和练习题,是学习和提升编程技能的理想资料。无论你是初学者还是经验丰富的开发者,都可以从中受益匪浅,不断提升自己的编程技艺。 总的来说,这本经典...