思路1: 定义三个状态,第一个状态是剩余的按键次数,用n
表示;第二个状态是当前屏幕上字符 A 的数量,用a_num
表示;第三个状态是剪切板中字符 A 的数量,用copy
表示。结果为当n为0时a_num的值,使用递归解决。
class Solution {
public:
int maxA(int N) {
return help(N,0,0);
}
int help(int &N,int &a_num,int ©){
if(N<=0) return a_num;
return max(help(N-1,a_num+1,copy),help(N-1,a_num+copy,copy),help(N-2,a_num,a_num));
}
};
思路2: 只定义一个状态为按键次数