一、递归算法
如果在第i个地方切割,就把钢条分为两个长度为i,n-i的钢条,问题转化为求这切割两个钢条的最大价值之和
考虑到不切割时的价值
只要比较不切割时的价值和所有切割情况价值和的最大值即可
递归出口:
当长度为0,返回0
递推式
结果=max(钢条不切割时的价值,钢条切成两半的价值)
递归计算出这两半的价值(子问题独立)
钢条切割的地方可以在第1个,第2个,第n/2个位置(之后对称)
代码:
二.动态规划
代码:
如果在第i个地方切割,就把钢条分为两个长度为i,n-i的钢条,问题转化为求这切割两个钢条的最大价值之和
考虑到不切割时的价值
只要比较不切割时的价值和所有切割情况价值和的最大值即可
递归出口:
当长度为0,返回0
递推式
结果=max(钢条不切割时的价值,钢条切成两半的价值)
递归计算出这两半的价值(子问题独立)
钢条切割的地方可以在第1个,第2个,第n/2个位置(之后对称)
代码:
代码: