C++实现——动态规划法(切割钢条问题)

假定公司出售一段长度为i英寸的钢条的利润为Pi,那么现有一根N英寸的钢条该如何切割才能利润最大,最大为多少。

#include<iostream>
#include<climits>
using namespace std;void mycut_roin(const int p[], int length, int n, int optim_income[], int optim_solution[]);
void show_array(int arr[], int n);int main()
{const int length = 10;int p[length+1] = { 0,1,5,8,9,10,17,17,20,24,30 };int n;cin >> n;int* optim_income(new int[n + 1]);int* optim_solution(new int[n + 1]);mycut_roin(p, length, n, optim_income, optim_solution);cout << "The optimal income: " << optim_income[n] << endl;while (n > 0){cout << optim_solution[n] << ' ';n -= optim_solution[n];}delete[] optim_income;delete[] optim_solution;return 0;
}void mycut_roin(const int p[], int length, int n, int optim_income[], int optim_solution[])
{optim_income[0] = optim_solution[0] = 0;for (int i = 1; i <= n; i++){int max_income = INT_MIN;for (int j = 1; j <= i; j++){int pval = (j >= length) ? p[length] : p[j];if (pval + optim_income[i - j] > max_income){max_income = pval + optim_income[i - j];optim_solution[i] = j;}}optim_income[i] = max_income;}show_array(optim_income, n + 1);show_array(optim_solution, n + 1);}void show_array(int arr[], int n)
{for (int i = 0; i < n; i++){cout.width(4);cout << arr[i] << ' ';}cout << endl;
}

C++实现——动态规划法(切割钢条问题)相关推荐

  1. 切割钢条问题(rod cutting problem)

    问题描述 Seriling公司购买长钢条,将其切割为短钢条出售.切割工序本身没有成本支出.公司管理层希望知道最佳的切割方案. 假定我们知道Serling公司出售一段长为ii ii英寸的钢条的价格为pi ...

  2. 算法导论动态规划切割钢条

    保存已经求得的子问题解 自底向上 #ifndef _MODEL_ #define _MODEL_ #include<vector> #include<map> using st ...

  3. 动态规划法(五)钢条切割问题(rod cutting problem)

      继续讲故事~~   我们的主人公现在已经告别了生于斯,长于斯的故乡,来到了全国最大的城市S市.这座S市,位于国家的东南部,是全国的经济中心,工商业极为发达,是这个国家的人民所向往的城市.这个到处都 ...

  4. 钢条切割问题——递归求解法

    这道题在算法导论(第三版)的204页 钢条切割问题是这样的: 给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...,n),求切割钢条方案,使得销售收益rn最大.注意,如果长度为n英寸的钢条的 ...

  5. 动态规划,java实现算法导论15章钢条切割

    来自浙江理工大学在读研究生Yuner: github地址 个人博客地址 此问题dp式 :rn = max(pi + r(n-1)) 不使用dp,用普通的递归方式来求解 //使用普通的方法来计算钢条切割 ...

  6. 《算法导论》学习(十七)----动态规划之钢条切割(C语言)

    文章目录 前言 一.钢条切割问题 1.问题背景 2.问题描述 3.问题的难点 (1)情况较多 (2)消除重复子问题 二.问题解决方案 1.问题的特点 (1)最优化子结构 (2)重复子问题 2.最优化解 ...

  7. 动态规划 -- 钢条切割问题

    给定一段长度为n英寸的钢条和一个价格表p,求切割钢条方案(钢条的长度均为整英寸),使得销售收益最大. 我们可以计算出长度为n英寸的钢条共有2的(n-1)次方种不同的切割方案. 为解决规模为n的原问题, ...

  8. 《算法导论》15章-动态规划 15.1 钢条切割(含有C++代码)

    一.引入 动态规划方法通常用来求解最优化问题(optimizationproblem).这类问题可以有很多可行解,每个解都有一个值,我们希望寻找具有最优值(最小值或最大值)的解.我们称这样的解为问 题 ...

  9. 算法设计与分析——动态规划(二):钢条切割

    分类目录:<算法设计与分析>总目录 相关文章: · 动态规划(一):基础知识 · 动态规划(二):钢条切割 · 动态规划(三):矩阵链乘法 · 动态规划(四):动态规划详解 · 动态规划( ...

最新文章

  1. 嵌入式开发之赛灵思 xilinx Zynq芯片简介---Zynq-7000 EPP (XC7Z010 and XC7Z020)
  2. 三星6.0系统手机最简单激活XPOSED框架的教程
  3. 程序员的一个爬虫,把估值175亿的马蜂窝给捅了
  4. VC++中的char,wchar_t,TCHAR(转载)
  5. WebKit 内核源码分析 (一) Frame
  6. 使用mpvue开发微信小程序——原生微信小程序、mpvue、wepy对比
  7. 【eclipse转idea的第一天】配置idea
  8. PHPCMS V9 为今天或几天前文章加new
  9. Python学习笔记(十)—— 高级特性
  10. linux平台下使用boost库
  11. Open3d之非阻塞可视化
  12. mysql 补丁 patch6_系统管理-第6部分――补丁(patch)管理和在线更新
  13. 用JAVA语言完成实验——猴子摘香蕉
  14. 企业邮箱客户端POP协议收信后,Webmail的邮件被删除,如何调整?
  15. 华为「天才少年」计划招募的博士们,迎来首秀!
  16. linux环境下常用的查找命令find、which、grep
  17. java8中map的新方法--replace
  18. BAT批处理批量修改文件后缀名
  19. 计算机网络利弊的作文英语作文,网络的利弊英语作文模板及范文赏析
  20. Chrome 刷新页面两次请求问题

热门文章

  1. 中英字体混和排版的图片获取流程
  2. 经典 《C++视频教程》 全集
  3. 武汉大学计算机学院学生工作处,武汉大学信息管理学院
  4. 酒店餐饮系统Micros9700相关问题
  5. matlab里如何输入圆周,用MATLAB实现序列的圆周卷积
  6. flash加密解密的相关知识
  7. 大航海时代5服务器维护,《大航海时代5》停运公告
  8. 怎么查找计算机的内存卡,怎么查看电脑内存卡型号
  9. php处理的excel,PHP处理Excel
  10. 系统备份 矮人dos工具箱