/* 动态规划之钢条的切割问题
vector p{0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30};
p[i]表示的是i长度的钢条价值为p[i]
求解将长度为n的钢条锯成多少小钢条才能使得价值最大 */
#include
#include<vector>
using namespace std;
int cut_Rod(vector<int> p,int n)
{
if(n == 0)
return 0;
int num = INT_MIN;
for (int i = 1; i <= n;i++)
{
num = max(num, p[i] + cut_Rod(p, n - i));
}
return num;
}
int main()
{
vector<int> p{0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30};
int len = 10;
cout << "请输入钢条的长度" << endl;
cin >> len;
int num = cut_Rod(p, len);
cout << "钢条切割的最大价值为" << endl;
cout << num;
return 0;
}