解决问题的策略

像程序员一样思考

我们所说的“问题”其实包含了约束条件,约束条件就是与这个问题或它的解决方法相关的、不能被违反的规则。以一台出故障的车为例,约束条件是修理车而不是购买一辆新车,其他约束条件可能还包括修理成本、时间限制等。

经典的难题

狐狸、鹅、玉米
  • 关键:陈述所有情况。
  • 解决问题的一个重要原则:如果没有意识到所有看可能的动作,很可能无法解决问题。我们可以把这些动作称为操作。通过列举所有可能的操作,可以解决许多问题。我们只要测试这些操作的每种组合,知道发现可行方案。概括的说,用更形式化的术语重新陈述一个问题,常常可以发现此前被我们忽略的解决方案。
  • 用更形式化的方式重新陈述问题是一种非常出色的技巧,可以让我们拥有对问题更好的洞察力。许多程序员设法与其他程序员一起讨论问题,并不仅仅因为对方已经有了答案,而是因为更清晰的陈述问题常常会激发有用的新思路。重新陈述问题就相当于与其他程序员讨论问题。
  • 更深远的意义在于,认识到思考问题很可能与思考解决方案具有相同的工作小路,甚至更胜一筹。很多时候,通往解决方案的正确道路本事就是解决方案。
瓷砖滑块问题
  • 关键: 操作环节漫长
  • 我们无法开始就规划一个完整性的解决方案时。不意味着无法采取策略和技巧。编程中无法看到通向解决方案的清晰道路时,更好的办法是采用一种策略,而不是通过简单的反复尝试和失败解决问题。
  • 在面临一个复杂的问题时,可以对这个问题的削减版进行实验。
  • 问题的细分通常并不是明显的解决之道,花时间研究怎样对问题进细分通常是非常合算的,解决问题时,头脑已经拥有一个特定的目标总比随机尝试要好的多,无论这个目标能否实现。
数独
  • 关键:关键找到突破点,从约束条件最多的下手。
  • 寻找问题约束性最强的部分,它可以简化思路消除很多选择。选最不好完成的下手。
  • 应从最显而易见的那部分任务开始着手。如果可以解决这部分问题,就可以在此基础上继续执行其他可以完成的任务。通过审视自己的代码,很可能会激发自己的想象力,从而解决剩下的问题。
Quarrasi 锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值