回溯(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
設∑={α1, α2…… αn }是n個互不相同的符號組成的符號集。 Lk={β1β2…βk | βiЄ ∑,1≤i≤k}是∑中字符組成的長度為k 的全體字符串。 S是Lk的子集,S是Lk的無分隔符字典是指對任意的S中元素a1a2…ak, b1b2…bk. {a2a3…akb1, a3a4…akb1b2, ……, akb1b2… bk-1 }∩S=Φ。該算法算法,對于給定的正整數n 和k,計算 Lk的最大無分隔符字典。
上傳時間: 2013-12-26
上傳用戶:waitingfy
經典c程序100例==1--10 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k printf("\n") for(i=1 i<5 i++) /*以下為三重循環*/ for(j=1 j<5 j++) for (k=1 k<5 k++) { if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k) }
上傳時間: 2014-01-07
上傳用戶:lizhizheng88
經典C語言程序設計100例1-10 如【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k printf("\n") for(i=1 i<5 i++) /*以下為三重循環*/ for(j=1 j<5 j++) for (k=1 k<5 k++) { if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k) } }
上傳時間: 2013-12-14
上傳用戶:hfmm633
Ex3-23 親兄弟問題 « 問題描述: 給定n 個整數0 1 1 , , , n- a a a 組成的序列。序列中元素i a 的親兄弟元素k a 定義為: min{ | } k i j n j j i a = a a ³ a < < 。 親兄弟問題要求給定序列中每個元素的親兄弟元素的位置。元素i a 的親兄弟元素為k a 時,稱k 為元素i a 的親兄弟元素的位置。當元素i a 沒有親兄弟元素時,約定其親兄弟元素 的位置為-1。 例如,當n=10,整數序列為6,1,4,3,6,2,4,7,3,5 時,相應的親兄弟元素位 置序列為:4,2,4,4,7,6,7,-1,9,-1。 « 編程任務: 對于給定的n個整數0 1 1 , , , n- a a a 組成的序列,試用抽象數據類型棧,設計一個O(n) 時間算法,計算相應的親兄弟元素位置序列。 « 數據輸入: 由文件input.txt提供輸入數據。文件的第1 行有1 個正整數n,表示給定給n個整數。 第2 行是0 1 1 , , , n- a a a 。 « 結果輸出: 程序運行結束時,將計算出的與給定序列相應的親兄弟元素位置序列輸出到output.txt 中。 輸入文件示例 輸出文件示例 input.txt 10 4 2 4 4 7 6 7 -1 9 -1 output.txt 6 1 4 3 6 2 4 7 3 5
上傳時間: 2013-12-17
上傳用戶:shizhanincc
給定n個整數a , a , ,an 1 2 組成的序列。序列中元素i a 的符號定義為: ï î ï í ì - < = > = 1 0 0 0 1 0 sgn( ) i i i i a a a a 符號平衡問題要求給定序列的最長符號平衡段的長度L,即: þ ý ü î í ì = + - = å = £ £ £ max 1| sgn( ) 0 1 j k i i j n k L j i a 。 例如,當n=10,相應序列為:1,1,-1,-2,0,1,3,-1,2,-1 時,L=9。
上傳時間: 2015-10-28
上傳用戶:xaijhqx
給定n 個整數a ,a , ,an 1 2 組成的序列, a n i | |£ ,1 £ i £ n。如果對于i £ j ,有 0 = å = j k i k a ,則稱序列區間i i j a , a , , a +1 為一個零和區間,相應的區間長度為j-i+1。
上傳時間: 2015-07-23
上傳用戶:zhangzhenyu
給定n 個整數a ,a , ,an 1 2 組成的序列, a n i | |£ ,1 £ i £ n。如果對于i £ j ,有 0 = å = j k i k a ,則稱序列區間i i j a , a , , a +1 為一個零和區間,相應的區間長度為j-i+1。
上傳時間: 2013-12-21
上傳用戶:偷心的海盜
TV-tree的c實現源碼,對應原文章K.-I. Lin, H. V. Jagadish, C. Faloutsos: The TV-Tree: An Index Structure for High-Dimensional Data.
上傳時間: 2014-11-26
上傳用戶:lxm
1) Write a function reverse(A) which takes a matrix A of arbitrary dimensions as input and returns a matrix B consisting of the columns of A in reverse order. Thus for example, if A = 1 2 3 then B = 3 2 1 4 5 6 6 5 4 7 8 9 9 8 7 Write a main program to call reverse(A) for the matrix A = magic(5). Print to the screen both A and reverse(A). 2) Write a program which accepts an input k from the keyboard, and which prints out the smallest fibonacci number that is at least as large as k. The program should also print out its position in the fibonacci sequence. Here is a sample of input and output: Enter k>0: 100 144 is the smallest fibonacci number greater than or equal to 100. It is the 12th fibonacci number.
標簽: dimensions arbitrary function reverse
上傳時間: 2016-04-16
上傳用戶:waitingfy