回溯(b a c k t r a c k i n g)是一種系統地搜索問題解答的方法。為了實現回溯,首先需要為問題定義一個解空間( solution space),這個空間必須至少包含問題的一個解(可能是最優的)。在迷宮老鼠問題中,我們可以定義一個包含從入口到出口的所有路徑的解空間;在具有n 個對象的0 / 1背包問題中(見1 . 4節和2 . 2節),解空間的一個合理選擇是2n 個長度為n 的0 / 1向量的集合,這個集合表示了將0或1分配給x的所有可能方法。當n= 3時,解空間為{ ( 0 , 0 , 0 ),( 0 , 1 , 0 ),( 0 , 0 , 1 ),( 1 , 0 , 0 ),( 0 , 1 , 1 ),( 1 , 0 , 1 ),( 1 , 1 , 0 ),( 1 , 1 , 1 ) }。
標簽: 搜索
上傳時間: 2014-01-17
上傳用戶:jhksyghr
鄰接矩陣類的根是A d j a c e n c y W D i g r a p h,因此從這個類開始。程序1 2 - 1給出了類的描述。程 序中,先用程序1 - 1 3中函數Make2DArray 為二組數組a 分配空間,然后對數組a 初始化,以描述 一個n 頂點、沒有邊的圖的鄰接矩陣,其復雜性為( n2 )。該代碼沒有捕獲可能由M a k e 2 D A r r a y 引發的異常。在析構函數中調用了程序1 - 1 4中的二維數組釋放函數D e l e t e 2 D
標簽: 矩陣
上傳時間: 2013-12-21
上傳用戶:lanjisu111
用C++中的MFC編程實現正軸等角割圓柱投影,實現以下要求: 取克拉索夫斯基橢球 (1)制圖區域: Bs=0°, BN=25° LE=105°, LE=125° (2)經緯線間隔: ΔB=ΔL=5° (3)制圖比例尺: 1:M0=1:1000 000 (4)標準緯線: Bk=±15° 計算經緯網格點的 x, y,m,n, p
上傳時間: 2013-12-29
上傳用戶:himbly
野人與修道士問題 這是一個古典的問題.假設有n個修道士和n個野人準備渡河,但只有一條能容納c人的小船,為了防止野人侵犯修道士,要求無論在何處,修道士的個數不得少于野人的人數(除非修道士個數為0).如果兩種人都會劃船,試設計一個算法,確定他們能否渡過河去,若能,則給出一個小船來回次數最少的最佳方案. 要求: (1) 用一個三元組(x1,x2,x3)表示渡河過程中各個狀態.其中,x1表示起始上岸修道士個數,x2表示起始岸上野人個數,x3表示小船位置(0-在目的岸,1-在起始岸).例如(2,1,1),表示起始岸有兩個修道士,一個野人,小船在起始岸一邊. 采用鄰接表做為存儲結構,將各種狀態之間的遷移圖保存下來. (2)采用廣度搜索法,得到首先搜索到邊數最少的一條通路. (3)輸出數據 若問題有解(能渡過河去),則輸出一個最佳方案.用三元組表示渡河過程中的狀態,并用箭頭指出這些狀態之間的遷移: 目的狀態<-...中間狀態<-...初始狀態. 若問題無解,則給出"渡河失敗"的信息. (4)求出所有的解.
上傳時間: 2016-02-23
上傳用戶:chenlong
簡單的floyd運用 第一行輸入一個整數C。C是測試的情況(0< C <=30).第二行一個正整數N( 0< N <=100),表示道路的總數.緊接N行,每一行包含兩個字符串, Si,,Ti,和一個整數Di,代表從Si到Ti的距離(0<= Di <=150)。最后一行有兩個字符串,S 和 T,你得找出從S 到 T的最短的距離。地名是不超過120個小寫字符的串(從‘a’到‘z’)。假設這里最多有100條直接連通兩個地方的路。 Output 輸出包含C行,每一行對一種測試情況。對每一種測試情況,輸出包含一個整數,假如S 到 T存在一條最短的路,輸出從S到T的最短距離,否則輸出“-1”. Sample Input 2 2 jiuzhouriver liuchi 89 liuchi liyuan 100 liuchi jiuzhouriver 3 youyongchi fengyuan 100 qinshi meiyuan 100 chaochang supermarkt 100 meiyuan youyongchi Sample Output 89 -1
上傳時間: 2016-03-10
上傳用戶:wyc199288
有限期作業安排問題”描述如下:有n個任務J1,J2,...,Jn,每個任務Ji都有一個完成期限di,若任務Ji在它的期限di內完成,則可以獲利Ci(1[i[n) 問如何安排使得總的收益最大(假設完成每一個任務所需時間均為一個單位時間).這個問題適合用貪心算法來解決,貪心算法的出發點是每一次都選擇利潤大的任務來完成以期得到最多的收益 但是對于本問題由于每一個任務都有一個完成的期限,因此在任務安排過程中除了考慮利潤Ci外,還要考慮期限di.
上傳時間: 2016-06-27
上傳用戶:s363994250
本文關鍵詞: c++ 字符串 函數 char *strcpy(char *s1, const char *s2) 將字符串s2復制到字符串數組s1中,返回s1的值 char *strncpy(char *s1, const char *s2, size_t n) 將字符串s2中最多n個字符復制到字符串數組s1中,返回s1的值
上傳時間: 2016-07-09
上傳用戶:lz4v4
c++二、通過將其元素插入到雙向鏈表中的方法對數組A進行排序。算法對鏈表的當前操作位置進行維護,當需要插入表項時,若新元素比當前位置值要大,則往前移動;若小則往后移動。編寫函數DoubleSort實現上述排序算法。 template <class T> void DoubliSort( T a[], int n)
上傳時間: 2013-12-03
上傳用戶:gundamwzc
已知記錄序列a[1..n] 中的關鍵字各不相同, 可按如下所述實現計數排序:另設數組c[1..n],對每 個記錄a[i], 統計序列中關鍵字比它小的記錄個數存 于c[i], 則c[i]=0的記錄必為關鍵字最小的記錄,然 后依c[i]值的大小對a中記錄進行重新排列,試編寫算 法實現上述排序方法。
上傳時間: 2016-08-17
上傳用戶:ljt101007
中卷積碼就是一種較好的信道編碼方式。這種編碼方式同樣是把k個信息比特編成n個比特,但k和n通常很小,特別適宜于以串行形式傳輸信息,減小了編碼延時。這里是卷積碼的viterbi算法C源代碼。
上傳時間: 2017-03-27
上傳用戶:ruixue198909