开发者社区> hoodlum1980> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

买了一本书《Programming pearls》编程珠玑(88上的数学题目(1))

简介: 我觉得这真是一本不错的书,正是符合我的喜好的一本书。恩,所以我还是买了原版回来,尽管我的英文水平有些差劲。我注意到有网上一个人评论说,里面有些雕虫小技而已,对于大的项目可能不适用,或者在现代计算机内存,cpu速度都很强的情况,有些问题不那么在乎了。
+关注继续查看

我觉得这真是一本不错的书,正是符合我的喜好的一本书。恩,所以我还是买了原版回来,尽管我的英文水平有些差劲。我注意到有网上一个人评论说,里面有些雕虫小技而已,对于大的项目可能不适用,或者在现代计算机内存,cpu速度都很强的情况,有些问题不那么在乎了。
我对这个评价觉得很不满意,尤其是将“智慧”所称雕虫小技,更是感到不认可。我觉得这本书想讲解的其实不是投机取巧的东西,而是完全为了是锻炼程序员的思想层次上的东西。这些也是决定一个程序员素质高低的关键。
技术可能会更新,涌现新的语言,工具和方法,环境等等,但是思想则会更持久,而这本书主要叙述的是思想,视角,从这个层次上提高效率和优美性。

我也看到了另一本书,是effective系列中的effective c#,我觉得这本书也是我比较需要的,因为里面有一些问题可能我并不是非常清楚。它主要的是帮助不太了解这些问题的人了解这些问题,了解编译器的喜好和个性,从而让你更有效的使用这个IDE,让你了解影响你的代码效率的比较底层的对你透明的一些东西,从而可写出更符合编译器口味,更有效率的代码。这和思想和算法层次是不同的,这主要是从高级语言特性等方面来提高代码效率,教给你良好的习惯和摒弃不良的代码习惯。它的层次更接近应用层,与语言,ide特性更相关。

而pearls是比较抽象的,我在书中看到的叙述感到非常有趣,因为作者提出问题后经常会给这个问题实际中的例子,这就非常有信服力,让你觉得这些智慧确实有用!我很喜欢,因为这些绝非投机,而非小计,而是智慧!不然,你觉得算法是什么,它就是一种抽象的方法,一种很强的智慧操纵后的解决方法转换处理(从人的直观型逻辑思维习惯转换为代码的过程控制型习惯),一种智慧的结晶。

这本书里面提到另一个人提出了一句话,而这句话恰恰也是作者的想法:A problem that seems difficult may have a simple, unexpected solution. 我想我确实是不太信任别人的翻译的,所以我要买回原版。因为中文表义具有一种模糊性,就是模棱两可,而英文表义具有一种确定性,即它的一些动词的语态与时间,被动等等结合,它可以更准确无歧义的进行描述。而且中文译者里面的素质也是良莠不齐的,可能得到公认和信任的也就是侯捷先生了,从他在前面列出一系列的词语对照和原因解释就能看出他的责任心和工作态度。回过来这句话,一个看起来很困难的问题,可能具有一个简单的出人意料的解法。嗯,我想这句话来描述优美的算法和代码非常恰当!

——————————————
比如说我在88上遇到的这个问题:
1,1,2,2,3,3,4,4,5,5这十个数字,要求排成一排,是两个1之间有1个数字,两个2之间有2个数字,...,两个5之间有5个数字。

怎么排呢?你可以在纸上尝试一下,无论如何,你都做不出结果,因为这道题无解。
怎么证明它无解呢?老实说,我虽然看到提示说用奇偶性证明,但是我没有想出怎么回事,而是用tc遍历搜索了一下发现没有任何输出。证明的方法我觉得这也可以说是另一种智慧能力的体现了,但是其实过程很简单:如果给 10 个数字从 1 到 10 进行连续编号,则显然这组编号必定由 5 奇数 5 偶数组成。
我们假设具有一个解满足题目要求,现在我们再次对这个解从 1 到 10 重新编号(显然仍由 5 个奇数编号和 5 个偶数编号组成):

那么考虑这个解里面的局部(子串):
1*1, 3***3, 5*****5,  这三对的数字(1,3,5)的编号的奇偶性相同。也就是(奇奇,或偶偶)* 3;
2**2, 4****4, 这两对数字(2,4)的编号的奇偶性不同。也就是说(是1奇1偶)* 2;


可见,解的编号具有偶数个偶数和偶数个奇数,和 5 奇 5 偶矛盾!因此无解。
证毕。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何使用 Restful ABAP Programming 编程模型开发一个支持增删改查的 Fiori 应用(二)
Restful ABAP Programming 编程模式是 ABAP 这门编程语言在不断向前进化的过程中,诞生的一门新的编程模型,简称为RAP模型。
9 0
【实操系列】 从0~1,基于DMS面向AnalyticDB PostgreSQL的数据ETL链路开发
本文以RDSPG 到 ADBPG 的数据链路作为案例,介绍了如何从0~1,基于DMS进行ETL数据链路开发
130 0
使用Cloud Application Programming模型开发OData的一个实际例子
刚刚过去的SAP TechEd上,SAP CTO Juergen Mueller向外界传递了一个重要的信息:身处云时代大环境下的SAP从业者,在SAP云平台上该如何选择适合自己的开发方式?
40 0
一个典型的使用 SAP Cloud Application Programming 模型开发的 Fiori 应用
这个应用的完整代码,在这里可以下载。 这个项目的层级结构如下图所示:
28 0
使用Cloud Application Programming模型开发OData的一个实际例子
刚刚过去的SAP TechEd上,SAP CTO Juergen Mueller向外界传递了一个重要的信息:身处云时代大环境下的SAP从业者,在SAP云平台上该如何选择适合自己的开发方式?
32 0
New Dynamic Programming Algorithm for the Generation of Optimal Bushy Join Trees
MySQL无疑是现在开源关系型数据库系统的霸主,在DBEngine的最新排名中仍然稳居第2位,与第3位SQL Server的积分差距并不算小,可以说是最受欢迎,使用度最高的数据库系统,这一点看看有多少新型数据库要兼容MySQL的协议和语法就知道了。
65 0
书籍:python网络编程 Python Network Programming - 2019
简介 主要特点 掌握Python技能,开发强大的网络应用程序 掌握SDN的基本原理和功能 为echo和chat服务器设计多线程,事件驱动的体系结构 此学习路径强调了Python网络编程的主要方面,例如编写简单的网络客户端,创建和部署SDN和NFV系统,以及使用Mininet扩展您的网络。
2127 0
好程序与差程序Good Programming, Bad Programming
好程序与差程序 Good Programming, Bad Programming 发布时间: 2012-11-20 16:32:21| 阅读数:2,735 views 优秀的程序可以使复杂的东西看起来很简单;糟糕的程序让原本简单的东西变得复杂。
796 0
+关注
hoodlum1980
算法相关技术专家。。。我晕,只是个码农而已。这个简介谁给我写的啊。
142
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载