原答案思路是正确的,但不能ac,附可以ac的代码,主要在mark数组的边界上 class Solution { public: int back_track(int n, vector<int>& mark) { // n <= 4, 表明不分,长度是最大的 if (n <= 4) { return n; } if(mark[n] != -1){ return mark[n]; } int ret = 0; for (int i = 1; i < 5; ++i) { ret = max(ret, i * back_track(n - i, mark)); } return mark[n]=ret; } int cutRope(int number) { // number = 2 和 3 时,分 2 段和分 1 段的结果是不一样的,所以需要特判一下 if (number == 2) { return 1; } else if (number == 3) { return 2; } vector<int> mark(number+1,-1); return back_track(number, mark); } };</int></int>
点赞

相关推荐

牛客网
牛客企业服务