国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

算法導(dǎo)論-鋼條切割 C# 遞歸實現(xiàn)

2019-11-17 02:31:01
字體:
供稿:網(wǎng)友
算法導(dǎo)論-鋼條切割 C# 遞歸實現(xiàn)

下班前看到有位兄弟寫 鋼條切割問題,嘗試實現(xiàn)C#版, 還沒有實現(xiàn)最優(yōu)版,分享一下。

int[] parr; PRivate void button1_Click(object sender, EventArgs e)        {            //策略標(biāo)準(zhǔn),如 總長度 7 取第1位,6位 , 最優(yōu)結(jié)果是:  18 = 1 + 17             parr = new int[] {                 1 , 5 , 8 , 9 , 10 , 17 , 17 , 20 , 45 , 30            };            Stack<int> stack = new Stack<int>();            //總?cè)萘?           int maxLength = 7 ;            int result = compute(parr, maxLength, ref stack);            int c = stack.Count;            Console.WriteLine("切割:");            int temp;            while (c-- > 0) {                Console.WriteLine(temp = stack.Pop());            }                      Console.WriteLine("結(jié)果:{0}", result);        }

核心部分:

  /// <summary>        ///         /// </summary>        /// <param name="p">策略標(biāo)準(zhǔn)</param>        /// <param name="length">分割集合</param>        /// <param name="stack">分割步驟</param>        /// <returns></returns>        int compute(int[] p, int length, ref  Stack<int> stack)        {            int price = 0;            //最優(yōu)方案            int maxPrice = 0;            //截止目前 本輪最優(yōu)方案步驟            Stack<int> __stack = null;            //臨時方案步驟            Stack<int> _stackTemp = null  ;            int split;            if (length == 0)                return 0;            for (int i = 1; i <= length ; i++ )            {                if (i >= p.Length)                {                    split = p.Length;                                    }                else                {                    split = i;                }                //臨時方案                _stackTemp = new Stack<int>();                price = p[split - 1] + compute(p, length - split, ref _stackTemp);                                if (maxPrice < price)                {                    //新方案                    maxPrice = price;                    _stackTemp.Push(split);                    //更新本輪最優(yōu)方案                    __stack = _stackTemp;                }            }            //將本輪最優(yōu)方案添加到全局方案集            while (__stack.Count > 0) {                stack.Push(__stack.Pop());            }                        //返回最優(yōu)結(jié)果            return maxPrice;        }

結(jié)果:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁乡县| 南城县| 集贤县| 大安市| 东源县| 两当县| 柏乡县| 瓮安县| 洛阳市| 呼玛县| 温宿县| 西林县| 句容市| 甘泉县| 大洼县| 泸西县| 朝阳市| 永年县| 武安市| 阜新| 南通市| 临安市| 丹寨县| 苗栗市| 图木舒克市| 隆昌县| 永州市| 封开县| 桐乡市| 广汉市| 黑河市| 磐石市| 定边县| 信丰县| 安康市| 拉孜县| 宣汉县| 宁明县| 南陵县| 锡林浩特市| 林州市|