using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { /*===========貪婪算法-背包問題============== 背包問題(Knapsack problem)是一種組合優化的NP完全問題。 問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得背包里物品的總價格最高。 問題的名稱來源於如何選擇最合適的物品放置於給定背包中。 相似問題經常出現在商業、組合數學,計算復雜性理論、密碼學和應用數學等領域中。 也可以將背包問題描述為決定性問題,即在總重量不超過W的前提下,總價值是否能達到V */ //貨物重量和價值 int[,] a; //背包承重 int w; //測試數據,答案是334 a = new int[,] { { 79, 58, 86, 11, 28, 62, 15, 68 }, { 83, 14, 54, 79, 72, 52, 48, 62 } }; w = 200; int v; //最大價值 v = GetMaxValue(w, a, 0); Console.WriteLine($"背包能實現的最大價值為:{v}"); Console.ReadKey(); } /// <summary> /// 獲得背包承重w,裝貨物o,從第k件向后考慮,得到的最大價值 /// </summary> /// <param name="w">背包承重</param> /// <param name="o">貨物o</param> /// <param name="k">第幾件開始默認索引0</param> /// <returns></returns> public static int GetMaxValue(int w, int[,] o, int k) { int v, t1, t2; //如果是最后一件貨物 if (k == o.GetLength(1) - 1) { if (w >= o[0, k]) { v = o[1, k]; } else { v = 0; } } //如果裝得下當前貨物 else if (w >= o[0, k]) { t1 = GetMaxValue(w - o[0, k], o, k + 1) + o[1, k]; t2 = GetMaxValue(w, o, k + 1); v = GetMax(t1, t2); } //裝不下當前貨物的情況 else { v = GetMaxValue(w, o, k + 1); } return v; } public static int GetMax(int a, int b) { return a > b ? a : b; } } }
MSCL超級工具類庫
基於C#開發的超強工具類,包含數據庫操作,字符串處理,文件或者文件夾處理
網絡請求,緩存處理,數據容器等上百個常用工具類封裝,附帶調用示例和參數說明,
提供CHM詳細文檔,上百個生產環境使用,穩定高效,簡單易用。
真正做到“工具在手,一切盡有”,讓你大幅度的提高編程效率,提高編程水平。
聯系QQ:7400799(請備注 "MSCL")
===============================================
重要壓縮文件忘記解壓密碼?網上下載rar/zip/7z等壓縮文件,需要密碼?
====極速解密助手,支持支持RAR/ZIP/7Z等多種壓縮文檔解密======
★ 解密不超過24小時,跟密碼復雜程度相關
★ 解密成功后再收費,無套路
★ 解密成功后自動刪除原件,無后顧之憂
聯系QQ:7400799(請備注 "文件解密")
==============================================
Magic.Orm已在數百個成熟項目中應用,是比較完善的ORM框架(基於C#開發)。開發過程中參考了NBear與MySoft,吸取了其中的一些精華,加入新思想,
后期參考EF的Lambda語法進行大量擴展。
為什么選擇Magic.Orm?
- 上手簡單,0學習成本。使用方便,按照sql書寫習慣編寫C#.NET代碼。功能強大。
- 高性能,接近手寫Sql。
- 體積小(不到200kb,僅一個dll)。
- 完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等數據庫。
- 支持大量Lambda表達式寫法。
- 不需要像NHibernate的XML配置,不需要像EF的各種數據庫連接驅動,集成簡單。
購買源碼 請聯系QQ:7400799(請備注 "ORM")