#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
class Solution {
public:
int maxCut(int n) {
vector<int> v(100);
if (n < 2) return 0;
if (n == 2) return 1;
if (n == 3) return 2;
v[1] = 1;
v[2] = 2;
v[3] = 3;
for (int i = 4; i <= n; i++) {
int max = 0;
for (int j = 1; j <= i / 2; j++) {
max = v[j] * v[i-j];
if (max > v[i]) v[i] = max;
}
}
return v[n];
}//动态规划
int maxCut2(int n) {
if (n < 2) return 0;
if (n == 2) return 1;
if (n == 3) return 2;
int sum3 = n / 3;
int sum2 = 0;
if (n - 3 * sum3==1) {
sum3--;
sum2 = 2;
}
return pow(3, sum3)*pow(2,sum2);
}//贪婪
};
int main(){
Solution s;
cout<<s.maxCut(10)<<endl;
cout<<s.maxCut2(10)<<endl;
return 0;
}
剑指offer14
最新推荐文章于 2023-12-27 23:16:19 发布