void Knight(int i , int j) { // printf("%d %dn",i,j) if (board[i][j] != 0 || i < 0 || i >= Size || j < 0 || j >= Size ) { return } step++ board[i][j]=step if (step == Size*Size) { showboard() system("PAUSE") return } //DFS Knight(i-2,j-1) //left Knight(i-2,j+1) Knight(i+2,j-1) //right Knight(i+2,j+1) Knight(i-1,j-2) //up Knight(i+1,j-2) Knight(i+1,j+2) //down Knight(i-1,j+2) // board[i][j]=0 step-- }
上傳時間: 2014-01-17
上傳用戶:cxl274287265
系統資源(r1…rm),共有m類,每類數目為r1…rm。隨機產生進程Pi(id,s(j,k),t),0
上傳時間: 2014-01-27
上傳用戶:天誠24
經典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
此為編譯原理實驗報告 學習消除文法左遞規算法,了解消除文法左遞規在語法分析中的作用 內含 設計算法 目的 源碼 等等.... 算法:消除左遞歸算法為: (1)把文法G的所有非終結符按任一種順序排列成P1,P2,…Pn 按此順序執行 (2)FOR i:=1 TO n DO BEGIN FOR j:=1 DO 把形如Pi→Pjγ的規則改寫成 Pi→δ1γ δ2γ … δkγ。其中Pj→δ1 δ2 … δk是關于Pj的所有規則; 消除關于Pi規則的直接左遞歸性 END (3)化簡由(2)所得的文法。即去除那些從開始符號出發永遠無法到達的非終結符的 產生規則。
上傳時間: 2015-03-29
上傳用戶:極客
算法介紹 矩陣求逆在程序中很常見,主要應用于求Billboard矩陣。按照定義的計算方法乘法運算,嚴重影響了性能。在需要大量Billboard矩陣運算時,矩陣求逆的優化能極大提高性能。這里要介紹的矩陣求逆算法稱為全選主元高斯-約旦法。 高斯-約旦法(全選主元)求逆的步驟如下: 首先,對于 k 從 0 到 n - 1 作如下幾步: 從第 k 行、第 k 列開始的右下角子陣中選取絕對值最大的元素,并記住次元素所在的行號和列號,在通過行交換和列交換將它交換到主元素位置上。這一步稱為全選主元。 m(k, k) = 1 / m(k, k) m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j != k m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k 最后,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復的原則如下:在全選主元過程中,先交換的行(列)后進行恢復;原來的行(列)交換用列(行)交換來恢復。
上傳時間: 2015-04-09
上傳用戶:wang5829
給定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
上傳用戶:偷心的海盜
經典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
Floyd-Warshall算法描述 1)適用范圍: a)APSP(All Pairs Shortest Paths) b)稠密圖效果最佳 c)邊權可正可負 2)算法描述: a)初始化:dis[u,v]=w[u,v] b)For k:=1 to n For i:=1 to n For j:=1 to n If dis[i,j]>dis[i,k]+dis[k,j] Then Dis[I,j]:=dis[I,k]+dis[k,j] c)算法結束:dis即為所有點對的最短路徑矩陣 3)算法小結:此算法簡單有效,由于三重循環結構緊湊,對于稠密圖,效率要高于執行|V|次Dijkstra算法。時間復雜度O(n^3)。 考慮下列變形:如(I,j)∈E則dis[I,j]初始為1,else初始為0,這樣的Floyd算法最后的最短路徑矩陣即成為一個判斷I,j是否有通路的矩陣。更簡單的,我們可以把dis設成boolean類型,則每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”來代替算法描述中的藍色部分,可以更直觀地得到I,j的連通情況。
標簽: Floyd-Warshall Shortest Pairs Paths
上傳時間: 2013-12-01
上傳用戶:dyctj
若在矩陣Am×n中存在一個元素A[i-1,j-1],其滿足A[i-1,j-1]是第i行元素中最小值,且又是第j列元素中最大值,則稱此元素為該矩陣的一個馬鞍點。用二維數組存儲矩陣Am×n ,設計算法求出矩陣中所有馬鞍點。
上傳時間: 2013-12-13
上傳用戶:ynwbosss