詞法分析程序,可對以下的C源程序進(jìn)行分析:main() {int a[12] ,sum for(i=1 i<=12 i++) {for(j=1 j<=12 j++)scanf("%d",&a[i][j]) } for(i=12 i>=1 i--){ for(j=12 j>=1 j--){ if(i==j&&i+j==13)sum+=a[i][j] } } printf("%c",sum) }
上傳時間: 2013-12-26
上傳用戶:skhlm
算法介紹 矩陣求逆在程序中很常見,主要應(yīng)用于求Billboard矩陣。按照定義的計(jì)算方法乘法運(yùn)算,嚴(yán)重影響了性能。在需要大量Billboard矩陣運(yùn)算時,矩陣求逆的優(yōu)化能極大提高性能。這里要介紹的矩陣求逆算法稱為全選主元高斯-約旦法。 高斯-約旦法(全選主元)求逆的步驟如下: 首先,對于 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 最后,根據(jù)在全選主元過程中所記錄的行、列交換的信息進(jìn)行恢復(fù),恢復(fù)的原則如下:在全選主元過程中,先交換的行(列)后進(jìn)行恢復(fù);原來的行(列)交換用列(行)交換來恢復(fù)。
上傳時間: 2015-04-09
上傳用戶:wang5829
一個簡單的類似鋼琴的游戲,能夠發(fā)出3個8度音, 低音:1~7; 中音:Q~U或q~u; 高音:A~J或a~j;
標(biāo)簽: 鋼琴
上傳時間: 2015-06-09
上傳用戶:784533221
Floyd-Warshall算法描述 1)適用范圍: a)APSP(All Pairs Shortest Paths) b)稠密圖效果最佳 c)邊權(quán)可正可負(fù) 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)算法結(jié)束:dis即為所有點(diǎn)對的最短路徑矩陣 3)算法小結(jié):此算法簡單有效,由于三重循環(huán)結(jié)構(gòu)緊湊,對于稠密圖,效率要高于執(zhí)行|V|次Dijkstra算法。時間復(fù)雜度O(n^3)。 考慮下列變形:如(I,j)∈E則dis[I,j]初始為1,else初始為0,這樣的Floyd算法最后的最短路徑矩陣即成為一個判斷I,j是否有通路的矩陣。更簡單的,我們可以把dis設(shè)成boolean類型,則每次可以用“dis[I,j]:=dis[I,j]or(dis[I,k]and dis[k,j])”來代替算法描述中的藍(lán)色部分,可以更直觀地得到I,j的連通情況。
標(biāo)簽: Floyd-Warshall Shortest Pairs Paths
上傳時間: 2013-12-01
上傳用戶:dyctj
求標(biāo)準(zhǔn)偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標(biāo)簽: gt myfunction function numel
上傳時間: 2014-01-15
上傳用戶:hongmo
求標(biāo)準(zhǔn)偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標(biāo)簽: gt myfunction function numel
上傳時間: 2013-12-26
上傳用戶:dreamboy36
求標(biāo)準(zhǔn)偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標(biāo)簽: gt myfunction function numel
上傳時間: 2016-06-28
上傳用戶:change0329
求標(biāo)準(zhǔn)偏差 > function c=myfunction(x) > [m,n]=size(x) > t=0 > for i=1:numel(x) > t=t+x(i)*x(i) > end > c=sqrt(t/(m*n-1)) function c=myfunction(x) [m,n]=size(x) t=0 for i=1:m for j=1:n t=t+x(i,j)*x(i,j) end end c=sqrt(t/(m*n-1
標(biāo)簽: gt myfunction function numel
上傳時間: 2014-09-03
上傳用戶:jjj0202
動態(tài)規(guī)劃的方程大家都知道,就是 f[i,j]=min{f[i-1,j-1],f[i-1,j],f[i,j-1],f[i,j+1]}+a[i,j] 但是很多人會懷疑這道題的后效性而放棄動規(guī)做法。 本來我還想做Dijkstra,后來變了沒二十行pascal就告訴我數(shù)組越界了……(dist:array[1..1000*1001 div 2]...) 無奈之余看了xj_kidb1的題解,剛開始還覺得有問題,后來豁然開朗…… 反復(fù)動規(guī)。上山容易下山難,我們可以從上往下走,最后輸出f[n][1]。 xj_kidb1的一個技巧很重要,每次令f[i][0]=f[i][i],f[i][i+1]=f[i][1](xj_kidb1的題解還寫錯了)
標(biāo)簽: 動態(tài)規(guī)劃 方程 家
上傳時間: 2014-07-16
上傳用戶:libinxny
Euler函數(shù): m = p1^r1 * p2^r2 * …… * pn^rn ai >= 1 , 1 <= i <= n Euler函數(shù): 定義:phi(m) 表示小于等于m并且與m互質(zhì)的正整數(shù)的個數(shù)。 phi(m) = p1^(r1-1)*(p1-1) * p2^(r2-1)*(p2-1) * …… * pn^(rn-1)*(pn-1) = m*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pn) = p1^(r1-1)*p2^(r2-1)* …… * pn^(rn-1)*phi(p1*p2*……*pn) 定理:若(a , m) = 1 則有 a^phi(m) = 1 (mod m) 即a^phi(m) - 1 整出m 在實(shí)際代碼中可以用類似素?cái)?shù)篩法求出 for (i = 1 i < MAXN i++) phi[i] = i for (i = 2 i < MAXN i++) if (phi[i] == i) { for (j = i j < MAXN j += i) { phi[j] /= i phi[j] *= i - 1 } } 容斥原理:定義phi(p) 為比p小的與p互素的數(shù)的個數(shù) 設(shè)n的素因子有p1, p2, p3, … pk 包含p1, p2…的個數(shù)為n/p1, n/p2… 包含p1*p2, p2*p3…的個數(shù)為n/(p1*p2)… phi(n) = n - sigm_[i = 1](n/pi) + sigm_[i!=j](n/(pi*pj)) - …… +- n/(p1*p2……pk) = n*(1 - 1/p1)*(1 - 1/p2)*……*(1 - 1/pk)
標(biāo)簽: Euler lt phi 函數(shù)
上傳時間: 2014-01-10
上傳用戶:wkchong
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1