如何求解问题--数据结构与算法入门

如何求解问题–数据结构与算法入门

在学习数据结构与算法前,我们大多有这样的困惑,难道学习了数据结构与算法就能帮助我们解决学习Java、Python时的大作业吗?数据结构与算法是什么?

回答这个问题之前,我们先来想想这样一个问题–如何用程序求解一个问题?

Pascal之父Nicklaus Writh认为程序(Programs) =数据结构(Data Structure)+算法(Alforithm),也就是说,首先确定问题中的数据及数据之间的关系,据此确定存储和表示数据的数据结构;然后指定一系列的处理数据的策略,求解问题

综上,用计算机求解问题的步骤是:

  1. 分析问题,确定数据及数据间的关系
  2. 设计一个能解决具有这些关系的数据的算法
  3. 编程调试

农夫过河问题

    问题: 人、狼、羊、菜如何全部从河的一案到另一岸? 问题描述: 人、狼、羊、菜在岸的一边 船只有两个位置,只有人能撑船 狼羊、羊菜不能在无人时共处

在尝试解决这个问题之前,我们先思考以下几个问题: - 研究的对象是什么,它们之间存在什么样的关系?(逻辑结构) - 对象及其关系如何映射到计算机内部,变为计算机可以表示和处理的形式?(存储结构) - 解题步骤应该如何设计?(算法) - 解题过程如何映射为一个计算过程?(编程)

第一个问题:研究的对象是什么,它们之间存在什么样的关系?(逻辑结构) 对象:所有合理的“原岸状态” 关系:状态之间的转换

剔除其中不合理的状态 在原岸中共有以上10种状态,这10中状态可以相互转换,从一种状态转换为另一种状态。根据问题要求,需要使得由人狼羊菜转为空。 上图中任何一条由人狼羊菜到空都可以解决此问题。

问题二:对象及其关系如何映射到计算机内部,变为计算机可以表示和处理的形式?(存储结构)

图的临阶矩阵表示法


说明:整理自老师课件

经验分享 程序员 微信小程序 职场和发展