Table of Contents

01

这本书的第一章阐述了一些解决问题的策略,举了几个例子,还是挺有趣的,之后还用c++演示了一些具体的解决问题的方法,有兴趣可以读一下

认识到一个已解决的问题和一个未解决的问题之间可供利用的相似之处。如果我们发现问题A的一个特性与已经解决的问题B的一个特性有相似之处,就为解决A奠定了良好的基础。

用更形象化的方式重新陈述问题是一种非常出色的技巧,可以让我们拥有对问题更好的洞察力。许多程序员设法与其他程序员一起讨论问题,并不仅仅是因为对方可能已经有了答案,而是因为清晰的陈述问题常常会激发有用的新思路。重新陈述问题就相当于与其他程序员讨论问题,只不过现在一个人分饰两角。

在解决编程问题时,有时会出现无法看到通向解决方案的清晰道路的情况,但这决不能成为跳过计划和采用系统性方法的借口。更好的办法是采用一种策略,而不是通过简单地反复尝试和失败来解决问题。

在面临一个复杂的问题时,我常常会对这个问题的削减版本进行试验。这些试验常常能够产生有价值的思路。花时间研究怎样对问题进行细分通常是非常合算的,即使无法找到一种清晰的细分,仍然有助于增强对问题的理解,可以促进这个问题的解决。在解决问题时,头脑里已经有一个特点的目标总比随机的尝试要好得多,无论最终是否能够实现这个目标。

应该从最显而易见的那部分任务开始着手,如果可以解决这个部分的问题,就可以在此基础上继续执行其他可以完成的任务,通过审视自己的代码,可能会激发自己的想象力,从而解决剩余部分的问题。

基本的问题解决技巧:

  1. 总是要指定计划
    这也许是最重要的规则,我们事先必须要制定计划,而不是直接进行漫无方向的尝试。
  2. 重新陈述问题
    即使重新陈述问题并没有直接让我们获得新思路,它仍然可能在其他方面提供帮助。例如,如果我们碰到一个问题(又上级或者指导老师指派),我们可以把问题重新陈述给指派这个任务的人,以确定自己的理解无误,另外,重新重述问题对于使用其他常用的技巧也可能是一个必要的先决步骤,例如削减和划分问题。
  3. 划分问题
  4. 从自己所知的开始
  5. 削减问题
  6. 寻找类比
  7. 试验
  8. 避免陷入挫折感 如果你觉得继续干下去会陷入挫折感时,可以休息一会,一个诀窍是让手头上处理的问题不止一个,这样,如果你对一个问题感到无可奈何,可以把精力转向另一个问题,注意,如果成功的划分了问题,就可以对单个问题应用这种技巧,只要把陷入僵局的那部分问题仍到一边,转而解决其他部分问题就可以了,如果没哟可以处理其他问题,也可以离开椅子做一些其他的事情,可以热热身,放松一下脑子,例如散步。洗衣服。做伸展运动,在休息结束之前。不在考虑那个问题。