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