問題描述 設有n種不同面值的硬幣,各硬幣的面值存于數組T[1:n]中?,F要用這些面值的硬幣來找錢,可以實用的各種面值的硬幣個數不限。當只用硬幣面值T[1],T[2],…,T[i]時,可找出錢數j的最少硬幣個數記為C(i,j)。若只用這些硬幣面值,找不出錢數j時,記C(i,j)=∞。 編程任務 設計一個動態規劃算法,對1≤j≤L,計算出所有的C( n,j )。算法中只允許實用一個長度為L的數組。用L和n作為變量來表示算法的計算時間復雜性 數據輸入 由文件input.txt提供輸入數據。文件的第1行中有1個正整數n(n<=13),表示有n種硬幣可選。接下來的一行是每種硬幣的面值。由用戶輸入待找錢數j。 結果輸出 程序運行結束時,將計算出的所需最少硬幣個數輸出到文件output.txt中。
標簽:
上傳時間: 2016-07-28
上傳用戶:yangbo69
已知記錄序列a[1..n] 中的關鍵字各不相同, 可按如下所述實現計數排序:另設數組c[1..n],對每 個記錄a[i], 統計序列中關鍵字比它小的記錄個數存 于c[i], 則c[i]=0的記錄必為關鍵字最小的記錄,然 后依c[i]值的大小對a中記錄進行重新排列,試編寫算 法實現上述排序方法。
上傳時間: 2016-08-17
上傳用戶:ljt101007
一、問題的提出: 某廠根據計劃安排,擬將n臺相同的設備分配給m個車間,各車間獲得這種設備后,可以為國家提供盈利Ci j(i臺設備提供給j號車間將得到的利潤,1≤i≤n,1≤j≤m) 。問如何分配,才使國家得到最大的盈利L 二.算法的基本思想: 利用動態規劃算法的思想,設將i臺設備分配給j-1個車間,可以為國家得到最大利潤Li (j-1)(1≤i≤n,1≤j≤m),那么將這i臺設備分配給j個車間,第j個車間只能被分配到0~i臺,所以我們只要算出當第j個車間分配到t(0<=t<=i)臺時提供的最大利潤Lt(j-1)+C(i-t)j,
標簽:
上傳時間: 2016-09-19
上傳用戶:希醬大魔王
“軟件限時注冊”控件(TShareRegist)功能說明: 1、只要將該控件加入主窗體,使Action屬性設為true,再設置其它屬性,你的軟件就有限時注冊的功能了,只要你牢記三個密鑰,并加上給你的算號軟件(RegObject_Admin.exe)你就可以無敵天下了。 2、控件使用目前最嚴嚴謹的加密算法,5級加密。是破解成為不可能,可以放心使用。 3、請記住,設計不同的軟件,給三個不同的密鑰,該控件可以讓你享用終生。 控件屬性說明: Action:boolean 是否開啟限時注冊功能 ShareDays:integer 免費使用的天數 ShareCount:integer 免費使用的次數 RootKey:string 注冊表的主根 EncrypKey1:string 密鑰1 EncrypKey2:string 密鑰2 EncrypKey3:string 密鑰3 Money:string 注冊費用 ActiveMenuItem:TMenuItem 激活注冊窗口的菜單項(點擊此菜單項便能彈出“注冊窗體”) ActiveButton:TButton 激活注冊窗口的按鈕(同上) Verion:string 控件版本號,只讀的
標簽: TShareRegist 控件 軟件
上傳時間: 2013-12-25
上傳用戶:fredguo
兩臺處理機A 和B處理n個作業。設第i個作業交給機器 A 處理時需要時間ai,若由機器B 來處理,則需要時間bi。由于各作 業的特點和機器的性能關系,很可能對于某些i,有ai >=bi,而對于 某些j,j!=i,有aj<bj。既不能將一個作業分開由兩臺機器處理,也沒 有一臺機器能同時處理2 個作業。設計一個動態規劃算法,使得這兩 臺機器處理完成這n 個作業的時間最短(從任何一臺機器開工到最后 一臺機器停工的總時間)。研究一個實例:(a1,a2,a3,a4,a5,a6)= (2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)
上傳時間: 2014-01-14
上傳用戶:獨孤求源
開發工控程序時使用自由口協議比較麻煩,效率也不高,PPI的協議要么付費要么不公開要么不好用,在網上找了一下也沒捷徑,算了,自己搞,經過1個禮拜的勞作,用VC搞了此DLL用于西門子S7-200 PLC的通信,讀100個數據耗時250ms,非常高效,在vc,delphi,vb,C#.NET平臺進行測試,效果不錯啊,開發效率提高數倍,特此與愛好者分享,附帶源碼
上傳時間: 2013-12-06
上傳用戶:luopoguixiong
“軟件限時注冊”控件(TShareRegist)功能說明: 1、只要將該控件加入主窗體,使Action屬性設為true,再設置其它屬性,你的軟件就有限時注冊的功能了,只要你牢記三個密鑰,并加上給你的算號軟件(RegObject_Admin.exe)你就可以無敵天下了。 2、控件使用目前最嚴嚴謹的加密算法,5級加密。是破解成為不可能,可以放心使用。 3、請記住,設計不同的軟件,給三個不同的密鑰,該控件可以讓你享用終生。
標簽: TShareRegist 控件 軟件
上傳時間: 2016-12-20
上傳用戶:a673761058
Euler函數: m = p1^r1 * p2^r2 * …… * pn^rn ai >= 1 , 1 <= i <= n Euler函數: 定義:phi(m) 表示小于等于m并且與m互質的正整數的個數。 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 在實際代碼中可以用類似素數篩法求出 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互素的數的個數 設n的素因子有p1, p2, p3, … pk 包含p1, p2…的個數為n/p1, n/p2… 包含p1*p2, p2*p3…的個數為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)
上傳時間: 2014-01-10
上傳用戶:wkchong
//Euler 函數前n項和 /* phi(n) 為n的Euler原函數 if( (n/p) % i == 0 ) phi(n)=phi(n/p)*i else phi(n)=phi(n/p)*(i-1) 對于約數:divnum 如果i|pr[j] 那么 divnum[i*pr[j]]=divsum[i]/(e[i]+1)*(e[i]+2) //最小素因子次數加1 否則 divnum[i*pr[j]]=divnum[i]*divnum[pr[j]] //滿足積性函數條件 對于素因子的冪次 e[i] 如果i|pr[j] e[i*pr[j]]=e[i]+1 //最小素因子次數加1 否則 e[i*pr[j]]=1 //pr[j]為1次 對于本題: 1. 篩素數的時候首先會判斷i是否是素數。 根據定義,當 x 是素數時 phi[x] = x-1 因此這里我們可以直接寫上 phi[i] = i-1 2. 接著我們會看prime[j]是否是i的約數 如果是,那么根據上述推導,我們有:phi[ i * prime[j] ] = phi[i] * prime[j] 否則 phi[ i * prime[j] ] = phi[i] * (prime[j]-1) (其實這里prime[j]-1就是phi[prime[j]],利用了歐拉函數的積性) 經過以上改良,在篩完素數后,我們就計算出了phi[]的所有值。 我們求出phi[]的前綴和 */
上傳時間: 2016-12-31
上傳用戶:gyq
1)已知2N點實數序列 N=64。用一個64點的復數FFT程序,一次算出 ,并繪出頻譜 。 (2)已知某序列 在單位圓上的N=64等分樣點的Z變換 。用N點IFFT程序計算 ,繪出圖像 。
上傳時間: 2017-01-10
上傳用戶:er1219