题解 | #剪绳子#
剪绳子
https://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ public int cutRope (int n) { if(n<5) { return n; } // write code here // f(n) = f(n-3) + 3 int[] dp = new int[n+1]; dp[1] = 1; dp[2] = 2; dp[3] = 3; dp[4] = 4; for(int i=5;i<=n;i++) { dp[i] = dp[i-3]*3; } return dp[n]; } }
由8推理可知需要尽可能多的3,那么容易得出动态规划的转移方程:f(n) = f(n-3) + 3