每日一题(错题分析)

news2025/1/17 0:51:38

'shy'的子序列的个数

这一题,我一开始就没什么思路,我就开始暴力枚举了,就是定义i,j(找i后面的),k(找j后面的),很显然这种方法超时了。所以我就想使用动态规划,但是空间又超了,我就很懵,到最后听老师讲空间优化(使用三个变量(滚动数组))进行优化才解决这道题

 1.暴力枚举

定义: i 指针来找, 找到了s,后在定义 i  + 1 位置为j 指针 找 h,找到定义k指针找y

 public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            in.nextLine();
            String str = in.nextLine();
            char[] chs = str.toCharArray();
            int count = 0;
            for (int i = 0; i < chs.length; i++) {
                if (chs[i] == 's'){
                    for (int j = i + 1; j < chs.length; j++) {
                        if (chs[j] == 'h') {
                            for (int k = j + 1; k < chs.length; k++) {
                                if (chs[k] == 'y') {
                                    count++;
                                }
                            }
                        }
                    }
                }
            }
            System.out.println(count);
        }
    }

2. 动态规划

多状态dp表示 的状态表示
1. S[i] 以i位置为结尾的有多少个 'S'
2. H[i] 以i位置为结尾的有多少个 'SH'
3. Y[i] 以i位置为结尾的有多少个 'SHY'

状态转移方程: S[i]     1. i位置为'S'   S[i] = S[i - 1] + 1
                     2. i位置不为'S' S[i] = S[i - 1]
状态转移方程: H[i]     1. i位置为'H'   H[i] = H[i - 1] + S[i - 1]  因为sshh 第四个为h让本来有两个sh + s(h)s(h)的个数
                      2. i位置不为'H' H[i] = H[i - 1]

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String str = " " + sc.next();
        int[] s = new int[n + 1];
        int[] h = new int[n + 1];
        int[] y = new int[n + 1];
        char[] chs = str.toCharArray();
        for (int i = 1; i < chs.length; i++) {
            if (chs[i] == 's'){
                s[i] = s[i - 1] + 1;
                h[i] = h[i - 1];
                y[i] = y[i - 1];
            }else if (chs[i] == 'h'){
                h[i] = h[i - 1] + s[i - 1];
                s[i] = s[i - 1];
                y[i] = y[i - 1];
            } else if (chs[i] == 'y') {
                y[i] = y[i - 1] + h[i - 1];
                s[i] = s[i - 1];
                h[i] = h[i - 1];
            }else {
                s[i] = s[i - 1];
                h[i] = h[i - 1];
                y[i] = y[i - 1];
            }
        }
        System.out.println(y[n]);
    }

3.空间优化 

使用三个变量进行优化,因为只需要用到前面一个状态,其他状态都不需要,这样也不需要不处理,不为s位置设置为s[i] = s[i - 1],因为等于和不处理一样,这就像求斐波那契一样。

public static void main3(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String str = " " + sc.next();
        int s = 0, h = 0, y = 0;
        char[] chs = str.toCharArray();
        for (int i = 1; i < chs.length; i++) {
            if (chs[i] == 's') {
                s += 1;
            } else if (chs[i] == 'h') {
                h += s;
            } else if (chs[i] == 'y') {
                y += h;
            }
        }
    }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1628316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】IP-guard WebServer 权限绕过漏洞

0x01 产品简介 IP-guard WebServer 是 IP-guard 网络安全管理系统的一部分,用于提供 Web 界面以进行用户权限管理、监控和审计。 0x02 漏洞概述 IP-guard WebServer的权限验证机制中存在设计缺陷,未授权的攻击者能够规避安全验证,通过后端接口执行文件的任意读取和删除操…

学习经验分享【33】YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 / RTDETR 基于 Pyside6 的图形化界面

大论文可以写两章关于算法创新模型&#xff0c;最后一章可以写对前两章提出方法进行封装&#xff0c;利用PyQT5搭建YOLOv5可视化界面&#xff0c;并打包成exe程序&#xff0c;构建检测平台实现简单的应用。用来凑大论文的字数和工作量&#xff0c;是简单又快速的方法&#xff0…

DELL PowerEdge服务器通过iDRAC升级BIOS遇到的问题

本文对PowerEdge 12G系统&#xff0c;也就是iDRAC 7版本升级BIOS中遇到的几个问题做个总结&#xff0c;对于其他版本理论上应该也是适用的。如果还遇到其他问题&#xff0c;可以添加VX&#xff0c;VX号为 StorageExpert 进行进一步的分析探讨。 第一个问题&#xff0c;成功下载…

【嵌入式AI开发】轻量级卷积神经网络MobileNet项目实战——文末完整源码工程文件

前言:本文介绍轻量级卷积神经网络MobileNet网络实战,包含MobileNetV1、MobileNetV2、ResNet50三个预训练模型可供选择。 实现:1.预训练MobileNet图像分类,2.调用摄像头实时MobileNet图像分类,3.MobileNet视频图像分类。 MobileNet网络理论详解:【嵌入式AI开发】轻量级卷…

keil把c语言函数转成汇编

汇编可以让开发人员从根源上理解程序的运行逻辑&#xff0c;本文介绍如何在keil环境下如何把一个c文件中的某一个函数&#xff0c;转换为汇编函数&#xff0c;并编译运行。 右击某个c文件&#xff0c;选择Option for File。。。 图1 然后把下图中的Generate Assembler SRC Fi…

Post请求中常见的Content-Type类型

Post请求中常见的Content-Type类型的结构 &#xff08;1&#xff09;application/x-www-form-urlencoded 这是浏览器原生的form表单类型&#xff0c;或者说是表单默认的类型。 下面是一个请求实例&#xff1a; 请求报文&#xff1a; 可以看得出&#xff0c;post将请求参数以k…

python学习笔记(常用方法)

方法1&#xff1a;字符串中元素大小写 1.name.title():首字母大写 2.name.upper():全部大写 3.name.lower():全部小写 # 字母大小写 nametian yang print(name.title()) # 首字母大写 print(name.upper()) # 全部大写 print(name.lower()) # 全部小写 Tian Yang TIAN YANG tia…

银行押款车远程监控系统的实际需求与特点

随着金融行业的快速发展&#xff0c;银行押款车的安全性问题日益受到重视。传统的押款车监控方式已经无法满足现代安全管理的需求&#xff0c;因此&#xff0c;一种结合先进技术的远程监控系统应运而生。本文旨在探讨在运钞车上安装车载摄像机和集成有GPS、无线4G网络传输模块的…

温湿度上传数据到云平台机智云

esp8266使用前的操作 固件修改 如果之前添加过 想要再次添加就把解压的文件夹删了 在重新解压一个 硬件连线 需要两个CH340&#xff08;USB转TTL模块&#xff09; 一个CH340模块的TX和RX分别于esp8266的RX和TX连接 3V3和GND也连接 另一个模块只需要连接一根线 就是GND连…

运筹系列91:vrp算法包PyVRP

1. 介绍 PyVRP使用HGS&#xff08;hybrid genetic search&#xff09;算法求解VRP类问题。在benchmark上的评测结果如下&#xff0c;看起来还不错&#xff1a; 2. 使用例子 2.1 CVRP COORDS [(456, 320), # location 0 - the depot(228, 0), # location 1(912, 0), …

Wireshark安装教程

一、下载 地址&#xff1a;https://www.wireshark.org/download.html打开网址后&#xff0c;点击相应的版本下载&#xff1a; 二、安装 下载完成后双击文件开始安装 点击Next 点击Noted 点击Next 点击Next 点击Next 可以点击Browse更改安装路径&#xff0c;默认…

Python实时聊天机器人框架之errbot使用详解

概要 在现代软件开发中,即时通讯和自动化任务的需求越来越重要。Python的Errbot库是一个强大的实时聊天机器人框架,可以帮助开发者快速构建自定义的聊天机器人应用,提供了丰富的特性和灵活的扩展能力。 安装 Errbot的安装非常简单,可以通过pip工具进行安装: pip instal…

力扣【LeetCode】258:各位相加

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;每日一练 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 【LeetCode】真的是一个好网站呀&#xff0c;上面的题目的太经典了&#xff0c;提供的方法也很很多&#xff0c;非…

抖店怎么高效选品?99%卖家都容易忽略的选品秘密

大家好&#xff0c;我是电商花花。 选品是我们做抖店商家最为担心的问题&#xff0c;如果选品选的不多&#xff0c;就很容易影响我们店铺的销量和转化&#xff0c;所以我们在做店的时候一定要学会高效选品。 今天花花分享一招高效选品的方法&#xff0c;或许大家都注意到&…

remote: HTTP Basic: Access deniedfatal: Authentication failed for

$ git push -u origin main remote: HTTP Basic: Access denied fatal: Authentication failed for https://gitcode.com/edenl/GD32E350_hid_keyboard.git/ 使用访问令牌做为密码登录即可。

uniapp小程序订阅通知

服务 开通订阅服务 const tmplIds ref([tsdasdadasdfgdrtwexQHdEsjZV])//换成自己的 function confirm(){uni.requestSubscribeMessage({tmplIds: tmplIds.value,success: (res) > {// console.log(res)let auth_notice res[tmplIds.value[0]] accept ? 1 : 2 //1是接…

WPF 资源基础

动态资源/静态资源 UI代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/ex…

Kafka 3.x.x 入门到精通(08)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;08&#xff09;——对标尚硅谷Kafka教程 5. Kafka优化5.1 资源配置5.1.1 操作系统5.1.2 磁盘选择5.1.3 网络带宽5.1.4 内存配置5.1.5 CPU选择 5.2 集群容错5.2.1 副本分配策略5.2.2 故障转移方案5.2.3 数据备份与恢复 5.3 参数配置优化5.4 数…

西安交通大学 915 备考常见误区

看到助教在 915 全程班群里给同学们解答问题&#xff0c;我也是感触颇深&#xff0c;想起来我当年自身的一个备考情况。接下来结合我自身情况给同学们分析一下&#xff0c;为什么有的同学基础一般&#xff0c;最后分数却很高&#xff0c;有的同学基础很好&#xff0c;分数却一般…

CC软件防火墙和WEB应用防火墙哪个好

本文将从CC软件防火墙的定义、原理、功能以及应用方面进行全面探讨&#xff0c;旨在加深对CC软件防火墙的理解&#xff0c;并推动网络安全意识的普及。以及WEB应用防火墙二者之间的对比。让用户更了解两个形态产品并作出选择。 第一部分&#xff1a;CC软件防火墙的定义和原理 …