這個例子如果運行,將在仿真的PC窗口中的第1,2,3行顯示一些信息后,在隨機位置顯示 1 ~ 5 .由于keil c51默認不支持重入函數,它的重入函數使用仿真的重入棧而不使用系統棧,而Small RTOS 51沒有進行重入棧管理,所以在TaskA~TaskE雖然及其相似,但不能合并.
注意:(1)在KEIL C51 工程中,我已經把輸出文件目錄設在e:\temp中,您可以在Project->Options for Target "Target 1"的output頁點擊Select Folder for Objects...和Listing頁點擊Select Folder for Listing...改變.
(2)編譯時會有5個警告,其中一個是因為沒有使用一個系統函數OSSendSignal引起,它可以忽略.另4個是禁止任務間變量覆蓋分析引起,必須忽略.感謝網友John X. Liu,在這個例子中我使用了他編寫的仿真(dllPc51Emu.dll),這個dll原來是為他移植的Ucos-ii for keil c51的例子編寫.
(3)Pc51Emu.dll在KEIL C51 V6.23 V7.00工作不正常.
標簽:
Small
keil
c51
仿真
上傳時間:
2015-05-29
上傳用戶:無聊來刷下
實現背包問題
package problem
1. 問題描述
假設有一個能裝入總體積為T的背包和n件體積分別為w1 , w2 , … , wn 的物品,能否從n件物品中挑選若干件恰好裝滿背包,即使w1 +w2 + … + wn=T,要求找出所有滿足上述條件的解。例如:當T=10,各件物品的體積{1,8,4,3,5,2}時,可找到下列4組解: (1,4,3,2)、(1,4,5)、(8,2)、(3,5,2)。
2. 基本要求
讀入T、n、w1 , w2 , … , wn
3.提示:
可利用遞歸方法:若選中w1 則問題變成在w2 , … , wn 中挑選若干件使得其重量之和為T- w1 ,若不選中w1,則問題變成在w2 , … , wn 中挑選若干件使得其重量之和為T 。依次類推。
也可利用回溯法的設計思想來解決背包問題。首先將物品排成一列,然后順序選取物品裝入背包,假設已選取了前i 件物品之后背包還沒有裝滿,則繼續選取第i+1件物品,若該件物品“太大”不能裝入,則棄之而繼續選取下一件,直至背包裝滿為止。但如果在剩余的物品中找不到合適的物品以填滿背包,則說明“剛剛”裝入背包的那件物品“不合適”,應將它取出“棄之一邊”,繼續再從“它之后”的物品中選取,如此重復,,直至求得滿足條件的解,或者無解。
注:沒壓縮密碼
標簽:
package
problem
體積
w2
上傳時間:
2014-01-18
上傳用戶:yxgi5