前言
仅记录学习笔记,如有错误欢迎指正。
题目
示例
- 输入: N=3
- 输出: 3
- 最多个A按法为A A A
解法
public int maxA(int N) {
//dp[i] 表示 i 次操作后最多能显示多少个 A
int dp[] = new int[N+1];
dp[0] = 0;
for(int i = 1;i<=N;i++){
dp[i] = dp[i-1]+1;
//最优的操作序列一定是 C-A C-C 接着若干 C-V,所以我们用一个变量 j 作为若干 C-V 的起点。
// 那么 j 之前的 2 个操作就应该是 C-A C-C 了 i-j次的粘贴(c-v) +1是加上本身的A的数量
for(int j = 2;j<i-2;i++){
dp[i] = Math.max(dp[i],dp[j-2]*(i-j+1));
}
}
//N次按键最多有几个A
return dp[N];
}