当前位置: 首页 > news >正文

leetcode 651. 4键键盘

651. 4键键盘

中等 102 company 微软 Microsoft company 谷歌 Google company 亚马逊

假设你有一个特殊的键盘包含下面的按键:

  • A:在屏幕上打印一个 ‘A’。
  • Ctrl-A:选中整个屏幕。
  • Ctrl-C:复制选中区域到缓冲区。
  • Ctrl-V:将缓冲区内容输出到上次输入的结束位置,并显示在屏幕上。

现在,你可以 最多 按键 n 次(使用上述四种按键),返回屏幕上最多可以显示 ‘A’ 的个数 。

示例 1:

输入: n = 3
输出: 3
解释: 我们最多可以在屏幕上显示三个’A’通过如下顺序按键: A, A, A

示例 2:

输入: n = 7
输出: 9
解释: 我们最多可以在屏幕上显示九个’A’通过如下顺序按键: A, A, A, Ctrl A, Ctrl C, Ctrl V, Ctrl V

提示:

1 <= n <= 50

解析:

  • 一个位置上的数可以由前边数复制过来,也可以时在前一个数的最大值上+1
  • 并且还可以连续复制,因此枚举赋值其实点
  • 在连续复制期间,执行操作一这种操作肯定不如接着复制,因此,考虑连续复制是不用想那么复杂;

代码:

class Solution {
public:// f[i] 表示 i 个元素的最大值// f[i]  = max(f[i-j]*可复制长度,f[i-1]+1)int maxA(int n) {int f[51];memset(f, 0, sizeof(f));f[1]=1,f[2]=2,f[3]=3;for(int i=4;i<=n;i++){int res = f[i-1]+1;// 枚举连续复制的起点,前两个操作为a,c中间的操作都是复制for(int j=i-3;j>=0;j--){res = max(f[j]*(i-j-1),res);}f[i] = res;}return f[n];}
};
http://www.lryc.cn/news/68678.html

相关文章:

  • Python垃圾回收机制
  • Grafana插件安装并接入zabbix数据源(03)
  • 简述 JavaScript 中 prototype
  • 一觉醒来Chat gpt就被淘汰了
  • 13款JavaScript图像处理库,建议收藏备用
  • uniapp m3u8格式视频加载
  • iOS描述文件(.mobileprovision)一键申请
  • 进行性能压力测试的原因、目的和好处
  • 【计算机视觉】如何利用 CLIP 做简单的人脸任务?(含源代码)
  • 基于显扬科技3D视觉相机的医疗试管分拣系统
  • 编译zlib
  • 如何让“ChatGPT自己写出好的Prompt的“脚本在这里
  • 菜单选择shell
  • Redis高可用性详解
  • MySQL(1) ---- 数据库介绍与MySQL概述
  • 面试题之软件测试流程
  • MyBatis中#{}与${}的区别,与各自的应用场景
  • 泛型类相关
  • 一文速学数模-季节性时序预测SARIMA模型详解+Python实现
  • 二叉树与图(C++刷题笔记)
  • STM32-ADC多通道输入实验
  • javaIO流之文件流
  • DMA-STM32
  • 代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串
  • 泛型(Generic) <? extends T>,<? super T>
  • 数云融合|数字化转型中的利器:揭秘云技术的重要角色
  • Linux篇2
  • 《微服务实战》 第九章 Gitlab使用
  • KMP匹配算法
  • ClickHouse笔记: Ubuntu/Centos下的安装, 配置和用户管理