leetcode-剪绳子 II-58

Posted 天津 唐秙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-剪绳子 II-58相关的知识,希望对你有一定的参考价值。

题目要求
  给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
思路
  我们由剪绳子1已经知道绳子尽可能多的分为3m所得到的乘积最大,前2,3,4米均可以算作特殊值处理,我们只需要判断长度为n的绳子能减成多少个3m,就可以得到结果。

代码实现

class Solution {
public:
	int cuttingRope(int n) {
		if (n == 2)
			return 1;
		if (n == 3)
			return 2;
		if (n == 4)
			return 4;
		long long result = 1;
		while (n >= 5)
		{
			result = (result * 3) % 1000000007;
			n -= 3;
		}
		result = (result * n) % 1000000007;
		return result;
	}
};

以上是关于leetcode-剪绳子 II-58的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 14- I. 剪绳子

Leetcode---剑指Offer题14---剪绳子

Leetcode---剑指Offer题14---剪绳子

LeetCode面试题14-2. 剪绳子II

LeetCode面试题14-2. 剪绳子II

Leetcode——剪绳子