本文主要是介绍剑指offer剪绳子;leetcode:LCR 131. 砍竹子 I,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现需要将一根长为正整数 bamboo_len
的竹子砍为若干段,每段长度均为正整数。请返回每段竹子长度的最大乘积是多少。
示例 1:
输入: bamboo_len = 12 输出: 81
提示:
2 <= bamboo_len <= 58
注意:本题与主站 343 题相同:. - 力扣(LeetCode)
根据数学经验,绳子一定是各部分分成等分才可能乘出来值最大。
int cuttingBamboo(int bamboo_len) {int k = bamboo_len / 2;int max = k * (bamboo_len - k);int flag = 0;if (bamboo_len >= 6) {for (int i = 3; i <= bamboo_len / 2; i++) {k = (int)(bamboo_len/i);long long int p = k;for (int j = 0; j < i - 2; j++) {p *= k;}p *= bamboo_len - k * (i - 1);if (p > max)max = p;if (k * i == bamboo_len)continue;k = (bamboo_len/i)+1;p = k;for (int j = 0; j < i - 2; j++) {p *= k;}p *= bamboo_len - k * (i - 1);if (p > max)max = p;}}return max;
}
这篇关于剑指offer剪绳子;leetcode:LCR 131. 砍竹子 I的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!