如何求解问题--数据结构与算法入门
如何求解問題–數據結構與算法入門
在學習數據結構與算法前,我們大多有這樣的困惑,難道學習了數據結構與算法就能幫助我們解決學習Java、Python時的大作業嗎?數據結構與算法是什么?
回答這個問題之前,我們先來想想這樣一個問題–如何用程序求解一個問題?
Pascal之父Nicklaus Writh認為程序(Programs) =數據結構(Data Structure)+算法(Alforithm),也就是說,首先確定問題中的數據及數據之間的關系,據此確定存儲和表示數據的數據結構;然后指定一系列的處理數據的策略,求解問題
綜上,用計算機求解問題的步驟是:
農夫過河問題
- 問題:
- 人、狼、羊、菜如何全部從河的一案到另一岸?
- 問題描述:
- 人、狼、羊、菜在岸的一邊
- 船只有兩個位置,只有人能撐船
- 狼羊、羊菜不能在無人時共處
在嘗試解決這個問題之前,我們先思考以下幾個問題:
- 研究的對象是什么,它們之間存在什么樣的關系?(邏輯結構)
- 對象及其關系如何映射到計算機內部,變為計算機可以表示和處理的形式?(存儲結構)
- 解題步驟應該如何設計?(算法)
- 解題過程如何映射為一個計算過程?(編程)
第一個問題:研究的對象是什么,它們之間存在什么樣的關系?(邏輯結構)
對象:所有合理的“原岸狀態”
關系:狀態之間的轉換
剔除其中不合理的狀態
在原岸中共有以上10種狀態,這10中狀態可以相互轉換,從一種狀態轉換為另一種狀態。根據問題要求,需要使得由人狼羊菜轉為空。
上圖中任何一條由人狼羊菜到空都可以解決此問題。
問題二:對象及其關系如何映射到計算機內部,變為計算機可以表示和處理的形式?(存儲結構)
圖的臨階矩陣表示法
說明:整理自老師課件
總結
以上是生活随笔為你收集整理的如何求解问题--数据结构与算法入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pandas去重函数
- 下一篇: 存在重复元素