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

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

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

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

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

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

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

农夫过河问题

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

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

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

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

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

图的临阶矩阵表示法
在这里插入图片描述


说明:整理自老师课件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值