很多学生问我这个问题,拿来一道题(或实际一个问题)解决它的思路和方法是什么. 其实人的思维是最难描述的。每个人的思考方式和习惯都不尽相同,解决同一个问题达到同一个效果的方式也是如此。简单的讲,“思路”是难以给出一个单一模式的,但是前人还是总结了很多方法。下面列出我个人比较常用的解题方法和思路,供大家参考。

博文首发地址:http://blog.csdn.net/duzixi

先说说解体思路。

解体思路有两大基本套路:一个是“自上而下”,另一个是“自下而上”。

自上而下:

简单的说,“自上而下”就是先把问题从整体上考虑好,明确整个问题都分成那几个大的部分,每个部分之间的关系是什么,然后再逐层细化和实现。

这种套路适用于以下几种场景:

这类问题基本上做过类似的,对应该包含哪些部分比较确定

一个项目由多人来完成,需要事先做好一定的分工

问题组成部分的关系相对简单

自下而上:

“自下而上”和“自上而下”相反,就是先把具体的局部做好,然后再建立他们之间的关系,搭建起来,用于形成一个整体。

第二种套路适用的场景如下:

问题未知成分很多,解决起来很迷茫

问题组成部分的关系很复杂,一时理不清头绪

有些问题未知性很强,这种未知性可能是对于个体的,也可能是对于整个人类的。无论怎样,当一件事情很不确定不知怎么去做的时候,不妨就着手先把能做的会做的部分事先了,有时思路也就随着这些实现的部分一点点打开了。在初学阶段(编程语言经验累计未满一年),想把一个较复杂的问题全想好再动手是不可能的。干想不动手是让你停滞不前的首要天敌。

在学习新知识的阶段,最不能害怕的就是做错和走弯路。

其实这两种套路也不是二选一那么单纯,在一些实际问题里,你会发现两种思路是相互配合着的。如何选,如何配合,因人而异。

其次,列一下解题方法:

分解法:把大问题拆分为多个小问题,逐一求解

分解法是工程师们最爱使用的方法。尤其是工程对象(对于软件工程师来说就是一个软件)相对庞大和复杂的时候,就必须用“分解法”将其分解成几个部分。

如果是面向过程的编程方法,就需要按功能分解成几个模块,然后用函数来实现这些模块。再按解决问题的顺序和步骤依次调用。

如果是面向对象的编程方法,就需要按类进行封装,用方法逐一实现类的行为,然后对外提供接口供其它类调用。

画图法:将问题形象化在纸面上,腾出更多的大脑内存来思考

这个方法是小学数学奥赛宋老师传授的,至今受用。她说画图法可以解决绝大多数问题。那个时候特别喜欢画画,所以也就特别喜欢用这个方法来解决问题。

画图法可以让问题“一目了然”。如果一个人更习惯于形象思维,那么这个方法会非常奏效。

图可以表达自然语言所难以描绘的内容。

软件开发中有很多成熟的“XX图”模式,流程图,类图,更能分解图,页面跳转图等等辅助开发。

但是画图法的功效绝不限于此,你完全可以用自己设计的图来描述一个问题。

如果图画的足够准确,那么它甚至可以帮你完成计算。

例:

(1)C语言循环章节的经典题目:小球落地又弹起

(2)我自己在做蜂窝布局这样的和视觉相关很高的算法的时候,就是事先先用自动铅笔在纸上大体想好计算公式,然后再用代码编写调试。

剥离法:先实现最核心的功能,再逐一完善

初学者在做项目开发时,经常会遇到这样一个尴尬问题:很多辅助功能都实现的很好了,最后发现核心功能实现不了。

从软件工程的角度,这个方法可能更像“原型法”。先实现最基本最核心的内容,然后其它内容再逐步完善。

试探法:“实践是验证真理的唯一标准”

使用前提条件:有穷性

适用情形:缺乏相关文档,文档说明不清,理解不充分

例如:直接看头文件(或API),猜用途,根据参数和返回值类型使用,观察结果并分析,然后做出结论

重复这个过程,直到找到自己需要的功能

枚举发/穷举法:

是什么让穷举变得轻松加愉快?——循环

是什么让计算机轻松战胜人类?——循环

对于简单的结构(单一的数组、字典、集合),穷举只需运用一个循环语句就可以搞定。而数组、字典、集合的嵌套对应的就用多个嵌套循环语句搞定即可。

对于稍微复杂一点的结构,例如树,就需要通过深搜或广搜来遍历。

代入法:

代入法其实就是让抽象问题具体化。

比如一个抽象符号公式(或者变量的运算),如果直接去想,很难验证。

这时就可以将具体的数字代入进去找规律。

比如说经典的打印菱形这道题(输入一个n,打印实心空心矩形),

如果想用最简逻辑计算的话,需要写出一个条件表达式。

直接用n去想这个条件表达式,不如先假设n=3,代入一个具体的数字进去,然后一点点找规律。

对于有些较复杂的问题,可能还需要继续代入n=4,5... 不过对于菱形这道代替,代入3就足够了。

除了套路和方法之外,我个人最喜欢用的思维方式是点展示思维,灵感在知识网络中闪现与穿梭的感觉最棒了。

最后用一句话暂时草草的结束这篇博文:

“这个世上本没有思路,思的人多了,便成了路。”

关于解题的思路与方法相关推荐

  1. 数学速算法_小学数学必考应用题解题思路及方法大汇总(附各年级练习题及答案)...

    长按二维码关注 小学数学学习不一定要死盯着书本,学习不是照着书背记就能学好,学习是要灵活的运用.运用的越多,掌握的就越牢靠! 应用题,可以说是小学数学中的半壁江山.做不好应用题的孩子,不止是数学成绩很 ...

  2. 小学数学典型应用题解题思路及方法(一)

    这是一篇对小学常见应用题解题思路和方法的总结,并分成30类汇编,不仅列出方法.定义.公式及解题思路,并对每个知识点进行了举例解析,以图片形式呈现给各位家长,值得收藏和复习,尤其对小升初学生帮助很大.今 ...

  3. 爱可可推荐!关于竞赛思路,方法和代码实践,Datawhale数据竞赛Baseline开源分享!...

    数据竞赛中baseline是最入门的分享, 它不仅有思路.方法还有内容: 或许你与Top选手的差距就是一个baseline! 01 项目介绍 如果你是数据竞赛的初学者.爱好者,比赛的baseline不 ...

  4. 爱可可推荐!关于竞赛思路,方法和代码实践,数据竞赛Baseline开源分享!

    数据竞赛中baseline是最入门的分享, 它不仅有思路.方法还有内容: 或许你与Top选手的差距就是一个baseline! 01 项目介绍 如果你是数据竞赛的初学者.爱好者,比赛的baseline不 ...

  5. sqlmap绕过d盾_WEBSHELL免杀绕过WAF思路amp;方法(一)

    本文主要介绍WEBSHELL免杀绕过的思路与方法,网上很多的方法基本都被安全厂家加入了检测规则已经不能免杀,所以我们要了解我们主要对手WAF的检测技术,故基于前人优秀基础上我们需要有能力衍生出免杀马, ...

  6. 化验室计算机用户管理,计算机实验室管理思路及方法

    计算机实验室管理思路及方法 高校计算机实验室机房在学生的培养.成长中发挥着十分重要的作用,为了给高校学生提供更好的计算机学习环境,就应该提高高校计算机实验组机房的管理和维护水平.作为高校计算机机房的管 ...

  7. 服务器送料器显示通讯异常,西门子贴片机常见故障处理思路和方法

    注意:以下处理思路和方法仅供参考,具体问题还需具体分析处理! 1.西门子贴片机按Start 无效. 1)原因:Table 没有连接好 处理:将Table连接好 2)原因:抛料盒/抛吸嘴盒没有安装到位 ...

  8. pycharm安装scrapy失败_运行Scrapy程序时出现No module named win32api问题的解决思路和方法...

    有小伙伴在群里边反映说在使用Scrapy的时候,发现创建项目一切顺利,但是在执行Scrapy爬虫程序的时候却出现下列报错:"No module named win32api",如下 ...

  9. 移动应用专项测试思路和方法

    在之前的文章简单介绍了移动端应用类型及特点https://blog.csdn.net/dou_being/article/details/119304770,这篇文章主要介绍Web  App.Nati ...

最新文章

  1. 宏基因组理论教程2扩增子分析
  2. Android旋转视频工具类,Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】...
  3. 【MyBatis】MyBatis分页插件PageHelper的使用
  4. mybatis获取mysql源数据类型_spring集成mybatis实现mysql数据库读写分离
  5. 音乐雷达 shazam算法_具有10亿首Shazam音乐识别功能的数据可视化
  6. 深度特征融合--add和concat【转载】
  7. mysql远程访问显示警告信息_开启mysql远程访问过程中所遇常见问题的解决办法...
  8. 复杂性思维中文第二版 七、物理建模
  9. 面试题:判断字符串是否回文
  10. 计算机做表格软件有哪些内容,制作表格软件,详细教您excel怎么制作表格
  11. 学习使用资源文件[4] - 用资源中的图片做背景、使用 LoadFromResourceID
  12. Android 开发错误集锦
  13. 弦截法(Secant Method)迭代求根的python程序
  14. watch蜂窝开通服务器中断,原因找到了!Apple Watch Series 3为何无法连接蜂窝网络...
  15. 【Java】线程池、Lambda表达式
  16. (转)DCB文件格式解析
  17. 16. 二元随机变量,离散型随机变量分布律
  18. java计算机毕业设计学校意见征集系统源码+系统+mysql数据库+lw文档
  19. 完美修改证件照背景详细步骤,可以消除边界处的白边或者红边
  20. 【题解】2020年蓝桥杯C/C++程序设计B组·试题 D: REPEAT 程序

热门文章

  1. ldap服务器配置信息错误,OpenLDAP配置错误ldap_bind:无效的凭据(49)
  2. 2022年音乐产业研究报告
  3. [深度学习学习笔记]注意力机制-Attentional mechanism
  4. AI:人工智能领域之AI基础概念术语之机器学习、深度学习、数据挖掘中常见关键词、参数等5000多个单词中英文对照(绝对干货)
  5. 炼丹术的终结——神经网络结构搜索之一
  6. 基于DS18B20的多点测温方案详解
  7. 重庆专科计算机系职业学校排名,重庆职业学校排名前十院校有哪些
  8. 12种逼死“强迫症”的创意家居设计
  9. cmd命令删除文件夹或文件
  10. 运用计算机优化教学的方法,运用计算机优化数学课堂教学