[演算法]簡單的揹包問題遞迴解法,C語言實現
阿新 • • 發佈:2019-01-09
今天講點簡單的演算法,最簡單的揹包0演算法,使用了遞迴的方法,相信看完程式碼的朋友會發現這段程式碼很熟悉,不過CG提供這些程式碼的目的只是讓全部揹包演算法的完整提供地給大家,程式碼很簡單,相信高手一看就懂,這裡的揹包演算法只是考慮了物品的重量,沒有考慮物品的價值,是初學遞迴演算法的朋友必看的程式碼,高手的話全當複習一下吧。
因為CG最近要考試了,一口氣要考6門,所以部落格更新沒有這麼快了,請大家見諒不過我還是會保持每天提供至少一篇的速度寫博文,希望大家能支援,謝謝
預告下明天的演算法博文,《銀行家演算法》,今天覆習了下作業系統,晚上重新安裝了系統,浪費了兩個小時,程式碼明天除錯後奉上,希望大家繼續關注。
--------------------------------------------------------------------------------------
- 版權宣告:
- 如在本頁面內無特別說明,本文內容均為[李大仁部落格]原創,本文版權歸[李大仁部落格]所有。
- 歡迎轉載,轉載請務必在文章頁面明顯位置提供原文連結並註明出處。歡迎您在轉載本文時保留本段宣告。
- 文章標題:[演算法]簡單的揹包0問題遞迴解法 C語言實現 附程式碼
- 獨立部落格:李大仁部落格
- 永久連結:http://www.lidaren.com/archives/285
--------------------------------------------------------------------------------------
以上內容由部落格自動釋出工具自動釋出,最終顯示內容和效果會與原文內容有所偏差,敬請諒解。
因為CG最近要考試了,一口氣要考6門,所以部落格更新沒有這麼快了,請大家見諒不過我還是會保持每天提供至少一篇的速度寫博文,希望大家能支援,謝謝
預告下明天的演算法博文,《銀行家演算法》,今天覆習了下作業系統,晚上重新安裝了系統,浪費了兩個小時,程式碼明天除錯後奉上,希望大家繼續關注。
/*簡單的揹包問題遞迴解
*code CG 2009-01-04
*/
#include"stdio.h"
#define N 6 /*物品數量*/
#define S 15 /*揹包大小*/
int W[N+1]={0,1,2,3,4,5,6};/*測試資料,各物品重量,W[0]不使用*/
/*knapsack()揹包函式
引數 int s 剩餘重量
int n 剩餘物品數
返回 int 揹包分配是否成功
*/
int knapsack(int s,int n){
if(s == 0)/*分配結束,成功*/
return 1;
if(s < 0 s > 0 && n < 1 br>
return 0;
if( knapsack(s - W[n] , n - 1)){/*遞迴*/
printf("%-4d",W[n]); /*輸出*/
return 1;
}
return knapsack(s , n - 1);
}
int main()
{
if(knapsack(S , N))/*遞迴呼叫*/
printf("nOK!n");
else
printf("Failed!");
return 1;
}/*main*/
--------------------------------------------------------------------------------------
- 版權宣告:
- 如在本頁面內無特別說明,本文內容均為[李大仁部落格]原創,本文版權歸[李大仁部落格]所有。
- 歡迎轉載,轉載請務必在文章頁面明顯位置提供原文連結並註明出處。歡迎您在轉載本文時保留本段宣告。
- 文章標題:[演算法]簡單的揹包0問題遞迴解法 C語言實現 附程式碼
- 獨立部落格:李大仁部落格
- 永久連結:http://www.lidaren.com/archives/285
--------------------------------------------------------------------------------------
以上內容由部落格自動釋出工具自動釋出,最終顯示內容和效果會與原文內容有所偏差,敬請諒解。