Description
一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi。那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大。
Input
输入钢条的长度n。
Output
输出获得的最大收益。
Sample Input
7
Sample Output
18
解题思路:
动态规划
对于长度为n的钢条,我们可以先切一刀,切下长度为1-10的钢条,共10种切法,
最大收益就是切下的钢条收益和剩下钢条的最大收益之和。
-
钢条长度为1的最大收益计算出来,保存到dp[1]
-
长度为2的钢条,遍历每一种切法,收益最大的保存到dp[2]
-
计算长度为n的钢条的最大收益,此时dp数组已经保存了1——n-1长度钢条的最大收益
遍历这10中切法,就可以找到最大的收益由于每种钢条长度的最大收益都被保存在数组dp中,避免了很多的重复计算,
#include<iostream>
#include<cstring>
using namespace std;
int pi