第10章綜合應(yīng)用設(shè)計(jì)(Java版)_第1頁
第10章綜合應(yīng)用設(shè)計(jì)(Java版)_第2頁
第10章綜合應(yīng)用設(shè)計(jì)(Java版)_第3頁
第10章綜合應(yīng)用設(shè)計(jì)(Java版)_第4頁
第10章綜合應(yīng)用設(shè)計(jì)(Java版)_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)第第10章章 綜合應(yīng)用設(shè)計(jì)綜合應(yīng)用設(shè)計(jì)l10.1 數(shù)組和集合數(shù)組和集合l10.2 實(shí)現(xiàn)迭代器實(shí)現(xiàn)迭代器 l10.3 算法設(shè)計(jì)策略算法設(shè)計(jì)策略l10.4 課程設(shè)計(jì)的目的、要求和選題課程設(shè)計(jì)的目的、要求和選題數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)目的目的l目的:目的:綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程所討論的基綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程所討論的基 礎(chǔ)知識(shí)和基本理論,解決具有一定礎(chǔ)知識(shí)和基本理論,解決具有一定 規(guī)模的、中等難度的實(shí)際應(yīng)用問規(guī)模的、中等難度的實(shí)際應(yīng)用問 題,培養(yǎng)綜合應(yīng)用設(shè)計(jì)能力。題,培養(yǎng)綜合應(yīng)用設(shè)計(jì)能力。l內(nèi)容:內(nèi)容:Java集合框架;多種算法設(shè)計(jì)策集合框架;多種算法設(shè)計(jì)策 略。

2、略。 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.1 數(shù)組和集合數(shù)組和集合10.1.1 Arrays數(shù)組類數(shù)組類(1) 比較兩個(gè)數(shù)組是否相等比較兩個(gè)數(shù)組是否相等public static boolean equals(Object a, Object b) (2) 填充填充public static void fill(Object a, Object obj) public static void fill(long a, int begin, int end, long value)數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.1.1 Arrays數(shù)組類數(shù)組類(3) 排序排序public static

3、void sort(Object a) public static void sort(T a, Comparator c) (4) 二分法查找二分法查找public static int binarySearch(Object a, int begin, int end, Object key)public static int binarySearch(T a, T key, Comparator c) 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)java.util.Comparator比較器比較器接口接口public interface Comparator int compare(T cobj1,

4、 T cobj2); /指定比較兩個(gè)對象大小的規(guī)則指定比較兩個(gè)對象大小的規(guī)則數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.1.2 Java集合框架集合框架1. 集合框架結(jié)構(gòu)集合框架結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)表表10-1集合框架中的主要接口和類集合框架中的主要接口和類 接接 口口實(shí)現(xiàn)接口的類實(shí)現(xiàn)接口的類一維數(shù)組一維數(shù)組循環(huán)雙鏈表循環(huán)雙鏈表平衡二叉樹平衡二叉樹散列表散列表Set集合集合TreeSetHashSetList列表列表ArrayListLinkedListMap映射映射TreeMapHashMap數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)2.迭代迭代 (1)java.util.Iterator

5、和和ListIterator迭代器接口迭代器接口public interface Iterator /迭代器接口迭代器接口 boolean hasNext(); /判斷是否有后繼元素判斷是否有后繼元素 T next(); /返回后繼元素返回后繼元素 void remove(); /刪除迭代器對象表示的集合當(dāng)前元素刪除迭代器對象表示的集合當(dāng)前元素?cái)?shù)據(jù)結(jié)構(gòu)(Java版)(第3版)java.util.ListIterator列表迭代器列表迭代器接口接口 public interface ListIterator extends Iterator boolean hasPrevious();/判斷是否

6、有前驅(qū)元素判斷是否有前驅(qū)元素 T previous(); /返回前驅(qū)元素返回前驅(qū)元素 int nextIndex(); /返回后繼元素序號(hào)返回后繼元素序號(hào) int previousIndex(); /返回前驅(qū)元素序號(hào)返回前驅(qū)元素序號(hào) void set(T x); /將集合當(dāng)前元素替換為將集合當(dāng)前元素替換為x void add(T x); /增加元素增加元素x數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)(2)java.lang.Iterable可迭代可迭代接口接口public interface Iterable Iterator iterator();數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)3.Collectio

7、n接口接口 public interface Collection extends Iterable Iterator iterator(); /獲得迭代器獲得迭代器 boolean isEmpty(); /判斷集合是否為空判斷集合是否為空 int size(); /返回集合的元素個(gè)數(shù)返回集合的元素個(gè)數(shù) boolean contains(Object obj); /判斷是否包含指定元素判斷是否包含指定元素 boolean add(T element); /增加指定元素增加指定元素 boolean remove(Object obj); /移去首次出現(xiàn)指定元素移去首次出現(xiàn)指定元素 void cl

8、ear(); /移去所有元素移去所有元素 /以下方法描述集合運(yùn)算,參數(shù)是另一個(gè)集合以下方法描述集合運(yùn)算,參數(shù)是另一個(gè)集合 boolean equals(Object obj); /比較兩個(gè)集合是否相等比較兩個(gè)集合是否相等 boolean containsAll(Collection c); /判斷集合包含判斷集合包含 boolean addAll(Collection c); /集合并集合并 boolean removeAll(Collection c); /集合差集合差 boolean retainAll(Collection c); /僅保留那些也包含在集合僅保留那些也包含在集合c中的元素

9、中的元素?cái)?shù)據(jù)結(jié)構(gòu)(Java版)(第3版)4.列表列表(1)List接口接口public interface List extends Collection T get(int i) /返回第返回第i(i0)個(gè)元素)個(gè)元素 T set(int i, T x) /用用x替換原第替換原第i個(gè)元素個(gè)元素 ListIterator listIterator() /返回列表迭代器對象返回列表迭代器對象(2)ArrayList類類 (3)LinkedList類類 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)5. Collections類類 public class Collections public static T

10、 max(Collection coll,Comparator c) /最大值最大值 public static T min(Collection coll, Comparator c) /最小值最小值 public static int binarySearch(List? extends Comparable list,T key) public static void sort(List list, Comparator c) /排序排序數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)【例例10.1】 電話簿。電話簿。1. Friend類表示電話簿對象,實(shí)現(xiàn)可比較、類表示電話簿對象,實(shí)現(xiàn)可比較、比較器和

11、序列化接口。比較器和序列化接口。2. TelephoneBookTreeSet類實(shí)現(xiàn)電話簿類實(shí)現(xiàn)電話簿的存儲(chǔ)和管理。的存儲(chǔ)和管理。 3. TelephoneBookJFrame類實(shí)現(xiàn)電話簿類實(shí)現(xiàn)電話簿的圖形用戶界面,提供添加、查找和刪除的圖形用戶界面,提供添加、查找和刪除功能。功能。數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)電話簿管理窗口中兩個(gè)分割窗電話簿管理窗口中兩個(gè)分割窗格的布局層次格的布局層次 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.2 實(shí)現(xiàn)迭代器實(shí)現(xiàn)迭代器 10.2.1 基于迭代器的操作基于迭代器的操作10.2.2 提供迭代器對象提供迭代器對象數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.2.1 基于迭代

12、器的操作基于迭代器的操作1. 抽象集合類抽象集合類public abstract class AbstractCCollection implements Iterable public abstract java.util.Iterator iterator(); public String toString() java.util.Iterator it = this.iterator(); String str=(; while (it.hasNext() /若有后繼元素若有后繼元素 str += it.next().toString(); /添加后繼元素字符串添加后繼元素字符串 if

13、(it.hasNext() str += , ; return str+); 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)2.抽象列表類抽象列表類 public abstract class AbstractLList extends AbstractCCollection public boolean equals(Object obj) if (obj = this) return true; if (!(obj instanceof AbstractLList) return false; java.util.Iterator it1 = this.iterator(); java.util.Ite

14、rator it2 = (AbstractLList)obj).iterator(); while (it1.hasNext() & it2.hasNext() if (!(it1.next().equals(it2.next() return false; return !it1.hasNext() & !it2.hasNext(); 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.2.2 提供迭代器對象提供迭代器對象1. 順序表類提供迭代器對象順序表類提供迭代器對象 public class SeqList extends AbstractLList implements LList

15、 public java.util.Iterator iterator() /返回返回Java迭代器對象迭代器對象 return new SeqIterator(); private class SeqIterator implements java.util.Iterator /私有內(nèi)部類,實(shí)現(xiàn)迭代器接口私有內(nèi)部類,實(shí)現(xiàn)迭代器接口 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)2. 單鏈表類提供迭代器對象單鏈表類提供迭代器對象 public class SinglyLinkedList extends AbstractLList implements LList public java.util.Iter

16、ator iterator() /返回返回Java迭代器對象迭代器對象 return new SinglyIterator(); private class SinglyIterator implements java.util.Iterator/私有內(nèi)部類,實(shí)現(xiàn)迭代器接口私有內(nèi)部類,實(shí)現(xiàn)迭代器接口 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)本書線性表接口和類的層次關(guān)系本書線性表接口和類的層次關(guān)系 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.3 算法設(shè)計(jì)策略算法設(shè)計(jì)策略10.3.1 分治法分治法10.3.2 動(dòng)態(tài)規(guī)劃法動(dòng)態(tài)規(guī)劃法10.3.3 貪心法貪心法10.3.4 回溯法回溯法數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版

17、)10.3.1 分治法分治法1. 分治策略分治策略分治法(分治法(divide and conquer)采用分而治之、逐個(gè)解)采用分而治之、逐個(gè)解決的策略。孫子兵法曰決的策略。孫子兵法曰“凡治眾如治寡,分?jǐn)?shù)是也。凡治眾如治寡,分?jǐn)?shù)是也。”2. 分治與遞歸分治與遞歸 結(jié)果結(jié)果 求解問題(問題規(guī)模)求解問題(問題規(guī)模) if (問題規(guī)模足夠?。▎栴}規(guī)模足夠小) /遞歸邊界條件遞歸邊界條件 求解小規(guī)模子問題;求解小規(guī)模子問題; else 分解,求解問題(問題規(guī)模縮?。?;分解,求解問題(問題規(guī)??s?。?; /遞歸調(diào)用遞歸調(diào)用 return 各子問題合并后的解;各子問題合并后的解;3. 分治法的效率分析

18、分治法的效率分析 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)深度優(yōu)先搜索遍歷二叉樹、樹和圖,以及折半深度優(yōu)先搜索遍歷二叉樹、樹和圖,以及折半查找、快速排序都是采用分治策略的算法。查找、快速排序都是采用分治策略的算法。 void 遍歷(問題規(guī)模)遍歷(問題規(guī)模) if (問題規(guī)模(問題規(guī)模1) /繼續(xù)遞歸繼續(xù)遞歸 訪問當(dāng)前元素;訪問當(dāng)前元素; while(存在子問題)(存在子問題)/分解成若干子問題分解成若干子問題 遍歷(子問題規(guī)模);遍歷(子問題規(guī)模); /遞歸調(diào)用遞歸調(diào)用 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.3.2 動(dòng)態(tài)規(guī)劃法動(dòng)態(tài)規(guī)劃法1. 動(dòng)態(tài)規(guī)劃動(dòng)態(tài)規(guī)劃 動(dòng)態(tài)規(guī)劃法(動(dòng)態(tài)規(guī)劃法(dynamic

19、programming)也是把)也是把一個(gè)大問題分解為若干較小的子問題,通過一個(gè)大問題分解為若干較小的子問題,通過求解子問題而得到原問題的解。動(dòng)態(tài)規(guī)劃法求解子問題而得到原問題的解。動(dòng)態(tài)規(guī)劃法采用備忘錄做法。采用備忘錄做法。 2. 動(dòng)態(tài)規(guī)劃法的基本要素動(dòng)態(tài)規(guī)劃法的基本要素 最優(yōu)子結(jié)構(gòu)最優(yōu)子結(jié)構(gòu) 子問題重疊子問題重疊 n數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)【例例10.2】 動(dòng)態(tài)規(guī)劃法求組合數(shù)。動(dòng)態(tài)規(guī)劃法求組合數(shù)。00,01111nmCCCmnmnCnmnmnmnm或nn m01234511121213133141464151510 1051數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.3.3 貪心法貪心法63

20、.6元元 = 10元元6+1元元3+0.1元元6 /15張張63.6 = 50+10+2+1+0.5+0.1 /6張(個(gè))張(個(gè))1. 貪心選擇策略貪心選擇策略 貪心法(貪心法(greedy)是運(yùn)用局部最優(yōu)選擇以期獲得)是運(yùn)用局部最優(yōu)選擇以期獲得全局最優(yōu)解的一種策略。全局最優(yōu)解的一種策略。 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)【例例10.3】 貪心法求解背包問題。貪心法求解背包問題。給定給定n個(gè)物品和一個(gè)背包,物品個(gè)物品和一個(gè)背包,物品i的重量為的重量為wi,價(jià)值為價(jià)值為pi ,背包能容納物品總重量為,背包能容納物品總重量為W;設(shè);設(shè)xi (0 xi 1)表示物品)表示物品i的幾分之幾,求如何的幾

21、分之幾,求如何選擇裝入背包的物品(全部或部分),使背包選擇裝入背包的物品(全部或部分),使背包中物品總價(jià)值中物品總價(jià)值 最大。最大。背包問題的約束條件為背包問題的約束條件為 W,滿足約束,滿足約束條件的條件的n元組元組 是一個(gè)可用解,使是一個(gè)可用解,使最大的可用解最大的可用解 是最優(yōu)解。是最優(yōu)解。niiixp1)(niiixw1)(),(21nxxxniiixp1)(數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)表表10-2 背包問題的多個(gè)可用解背包問題的多個(gè)可用解 n=3,物品,物品 序列為序列為(80,20),(50,25),(15,45),W=100。 ),(321xxx31)(iiixw)(31ii

22、ixp方方案案可用解可用解 背包重量背包重量 背包價(jià)值背包價(jià)值 1(1, 20/50, 0)80+20=10020+25*2/5=302(1, 5/50, 1)80+5=15=10020+25*5/50+45=67.53(50/80, 1, 0)50+50=10020*50/80+25=37.54(35/80, 1, 1)35+50+15=10020*35/80+25+45=78.75),(iipw數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.3.3 貪心法貪心法1. 貪心法的基本要素貪心法的基本要素 貪心選擇性質(zhì)貪心選擇性質(zhì) 最優(yōu)子結(jié)構(gòu)性質(zhì)最優(yōu)子結(jié)構(gòu)性質(zhì) 2. 貪心法與動(dòng)態(tài)規(guī)劃法的區(qū)別貪心法與動(dòng)態(tài)規(guī)

23、劃法的區(qū)別 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)4.最小堆最小堆 貪心選擇策略最簡單的應(yīng)用是求最小值。貪心選擇策略最簡單的應(yīng)用是求最小值。 public class MinHeapT extends java.lang.Comparable/最小堆類最小堆類 Comparable element;/最小堆元素?cái)?shù)組最小堆元素?cái)?shù)組 int len; /最小堆元素個(gè)數(shù)最小堆元素個(gè)數(shù) Comparator comparator=null; /比較器比較器數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)圖圖10-6 最小堆插入和刪除元素最小堆插入和刪除元素 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)5.貪心策略應(yīng)用貪心策略應(yīng)用 Pr

24、im算法算法 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版) Dijkstra算法采用貪心算法采用貪心 選擇策略逐步擴(kuò)充頂選擇策略逐步擴(kuò)充頂點(diǎn)點(diǎn)A的單源最短路徑的單源最短路徑 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)Huffman算法采用貪心選擇策略算法采用貪心選擇策略逐步合并森林構(gòu)造逐步合并森林構(gòu)造Huffman樹樹 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)6. Kruskal算法實(shí)現(xiàn)算法實(shí)現(xiàn) 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)(1)最小生成樹類)最小生成樹類 public class MinSpanTree Edge mst; /邊集合邊集合 int cost=0; /代價(jià)代價(jià) public MinSpanTree(in

25、t n, Edge edges, Comparator comparator) MinHeap minheap = new MinHeap(edges, comparator); 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)例例10.4 以以Kruskal算法構(gòu)造帶算法構(gòu)造帶權(quán)無向圖的最小生成樹。權(quán)無向圖的最小生成樹。 圖圖10-10的所有邊按權(quán)值構(gòu)造的最小堆的所有邊按權(quán)值構(gòu)造的最小堆 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)(2)并查集類)并查集類 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)(2)并查集類)并查集類數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)圖圖10-13 查找集合元素時(shí)采用查找集合元素時(shí)采用折疊規(guī)則壓縮路徑折疊規(guī)則

26、壓縮路徑 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)10.3.4 回溯法回溯法回溯法(回溯法(backtracking)在問題的解空間)在問題的解空間中,以深度優(yōu)先策略搜索滿足約束條件的一個(gè)中,以深度優(yōu)先策略搜索滿足約束條件的一個(gè)解或所有解。二叉樹、樹和圖的深度優(yōu)先搜索解或所有解。二叉樹、樹和圖的深度優(yōu)先搜索遍歷算法采用的是回溯法。遍歷算法采用的是回溯法。用回溯法解題通常包含以下三個(gè)步驟:用回溯法解題通常包含以下三個(gè)步驟: 定義所求問題的解空間。定義所求問題的解空間。 構(gòu)造易于搜索的解空間結(jié)構(gòu)。構(gòu)造易于搜索的解空間結(jié)構(gòu)。 以深度優(yōu)先方式搜索解空間,并在搜索過以深度優(yōu)先方式搜索解空間,并在搜索過程中用剪枝

27、函數(shù)避免無效搜索。程中用剪枝函數(shù)避免無效搜索。數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)1. 問題的解空間及解空間樹問題的解空間及解空間樹0-1背包問題(背包問題(n=3)解空間是)解空間是(0,0,0) , (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1)圖圖10-14 0-1背包問題的解空間二叉樹背包問題的解空間二叉樹 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)圖圖10-15 窮舉法求解窮舉法求解0-1背包問題背包問題 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)2. 約束集的完備性約束集的完備性 若一個(gè)若一個(gè)i(1in)元組)元組 違反涉及到違反

28、涉及到 元素的一個(gè)約元素的一個(gè)約束條件,則以束條件,則以 為前綴的任為前綴的任何何n元組元組 一定也違反相一定也違反相應(yīng)的約束條件。應(yīng)的約束條件。 ),(110ixxx110,ixxx),(110ixxx),(1110nixxxx數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)3.回溯策略回溯策略 深度優(yōu)先搜索深度優(yōu)先搜索 剪枝:約束剪枝,限界剪枝剪枝:約束剪枝,限界剪枝 遞歸回溯與迭代回溯遞歸回溯與迭代回溯 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)0-1背包問題按背包重量的約束背包問題按背包重量的約束剪枝剪枝 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)0-1背包問題按背包重量的限背包問題按背包重量的限界剪枝界剪枝數(shù)據(jù)結(jié)構(gòu)(J

29、ava版)(第3版)例例10.5 回溯法求解回溯法求解0-1背包問題。背包問題。 物品按重量降序排列物品按重量降序排列 物品按單位重量價(jià)值降序排列物品按單位重量價(jià)值降序排列圖圖10-18 0-1背包問題物品按單位重量價(jià)值降序排列的解空間樹背包問題物品按單位重量價(jià)值降序排列的解空間樹 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)【例例10.6】 回溯法求解八皇后問題?;厮莘ㄇ蠼獍嘶屎髥栴}。八皇后問題的解空間八皇后問題的解空間 八皇后問題的顯約束是八皇后問題的顯約束是 (0i7),),解空間由解空間由 個(gè)個(gè)8元組構(gòu)成,范圍是元組構(gòu)成,范圍是(0,0,0,0,0,0,0,0)(7,7,7,7,7,7,7,7),

30、解空間樹是一棵滿八叉樹。隱約束,解空間樹是一棵滿八叉樹。隱約束是任意兩個(gè)皇后不在同一列或同一斜線上。是任意兩個(gè)皇后不在同一列或同一斜線上。887 , 1 , 0iiSx數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版) 用回溯法求解四皇后問題的解用回溯法求解四皇后問題的解空間樹空間樹數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版) 判斷隱約束條件判斷隱約束條件n 任意兩個(gè)皇后不在同一列上。若任意兩個(gè)皇后不在同一列上。若ij,有有 。意為元素各不相同,確定。意為元素各不相同,確定(0,0,?,?)等不是解。等不是解。 n 任意兩個(gè)皇后不在同一斜線上。若任意兩個(gè)皇后不在同一斜線上。若ij,有有 。由此約束確定。由此約束確定(0,1

31、,?,?)、(0,2,1,?)、(0,3,1,0)等不是解。等不是解。 jixx jixxji數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版) 用回溯法求解八皇后問題程序用回溯法求解八皇后問題程序 迭代回溯迭代回溯數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)【例例10.7】 預(yù)見算法解騎士游歷問題。預(yù)見算法解騎士游歷問題。 騎士游歷問題的解空騎士游歷問題的解空間間 馬到達(dá)該格的步數(shù)自然數(shù)馬未到達(dá)過0 xyc一次不成功游歷路徑一次不成功游歷路徑 數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版) 預(yù)見算法預(yù)見算法 方向方向下一位置下一位置可通方向可通方向可通路數(shù)可通路數(shù)1(2,4)1,2,3,4,6,7,872(3,5)1,2,3,4,5,7,873(5,5)1,2,3,4,5,6,874(6,4)1,2,3,6,755(6,2)2,3,6,7,856(5,1)1,3,4,5,857(3,1)1,2,4,5,858(2,2)1,2,3,5,6,7,87數(shù)據(jù)結(jié)構(gòu)(Java版)(第3版)騎士游歷算法流程騎士游歷算法流程 數(shù)據(jù)結(jié)構(gòu)(Java版)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論