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

第四届蓝桥杯省赛 C++ B组 - 翻硬币

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:蓝桥杯题解集合
📝原题地址:翻硬币
📣专栏定位:为想参加蓝桥杯的小伙伴整理常考算法题解,祝大家都能取得理想成绩!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

问题描述

小明正在玩一个“翻硬币”的游戏。

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。

比如,可能情形是:**oo***oooo

如果同时翻转左边的两个硬币,则变为:oooo***oooo

现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

我们约定:把翻动相邻的两个硬币叫做一步操作。

输入格式

两行等长的字符串,分别表示初始状态和要达到的目标状态。

输出格式

一个整数,表示最小操作步数

数据范围

输入字符串的长度均不超过100。
数据保证答案一定有解。

输入样例1:

**********
o****o****

输出样例1:

5

输入样例2:

*o**o***o***
*o***o**o***

输出样例2:

1

思路

本题需要我们将给定的起始状态转换成目标状态,并且每次都只能翻转相邻的两个硬币。

我们可以从前往后进行递推,如果第一个硬币的状态与目标状态不同,则需要对其及其相邻的硬币进行反转,这样第一个硬币就得到了目标状态,并且不能再改变,因为再翻转状态就不对了。同样去判断第二个硬币与目标状态是否不同,如果相同则不做改动,不同则翻转它和它后面的那一个硬币。

以此类推,最终我们可以发现,当第一个硬币状态确定下来之后,后面的硬币都会随之发生改变,并且会确定下来,因此只用从前往后进行判断并计算翻转个数即可。

举个例子,假设初始状态和目标状态如下图所示:

然后从第一个硬币开始往后递推,发现第一个硬币和目标状态不同,故将第一个硬币以及其后面那个硬币进行翻转,从而确定下第一个硬币的状态。

同样,我们可以发现第二个硬币也和目标状态不同,做上面一样的操作。

第三个硬币同样和第二个硬币情况一样。

第四个硬币和上面操作一样,不过这里不同的地方就是,第四个硬币后面的那个硬币一起翻转后反而达到了目标状态。

于是后面的硬币可以发现都已经达到了目标状态,故不用再翻转,最终翻转了四次硬币达到了目标状态。

代码

#include <bits/stdc++.h>
using namespace std;const int N = 110;
char st[N], ed[N];void turn(int x) {if (st[x] == '*')st[x] = 'o';elsest[x] = '*';
}int main() {cin >> st >> ed;int n = strlen(st), step = 0;for (int i = 0; i < n - 1; i++) {if (st[i] != ed[i]) {turn(i);turn(i + 1);step++;}}cout << step << endl;return 0;
}

相关文章:

第四届蓝桥杯省赛 C++ B组 - 翻硬币

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;翻硬币 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家都…...

linux shell 入门学习笔记14 shell脚本+数学计算

概念 把复杂的命令执行过程&#xff0c;通过逻辑代码&#xff0c;组成一个脚本文件的方式就叫做shell脚本。 shebang #! /bin/bash #! /bin/perl #! /bin/python执行脚本的方式 source my_first.sh . my_first.shbash my_first.sh ./my_first.sh变量引用 ${var} 取出变量结果 …...

ESP32设备驱动-MAX30100心率监测传感器驱动

MAX30100心率监测传感器驱动 1、MAX30100介绍 MAX30100 是一款集成脉搏血氧饱和度和心率监测传感器解决方案。 它结合了两个 LED、一个光电探测器、优化的光学器件和低噪声模拟信号处理,以检测脉搏血氧饱和度和心率信号。 MAX30100 采用 1.8V 和 3.3V 电源供电,可通过软件…...

RTD2169芯片停产|完美替代RTD2169芯片|CS5260低BOM成本替代RTD2169方案设计

RTD2169芯片停产|完美替代RTD2169芯片|CS5260低BOM成本替代RTD2169方案设计 瑞昱的RTD2169芯片目前已经停产了&#xff0c; 那么之前用RTD2169来设计TYPEC转VGA方案的产品&#xff0c;该如何生产这类产品&#xff1f;且RTD2169芯片价格较贵&#xff0c;芯片封装尺寸是QFN40&…...

urho3d数据库

只有在启用以下两个构建选项之一时&#xff0c;数据库子系统才会构建到Urho3D库中&#xff1a;Urho3D_Database_ODBC和Urho3D-Database_SQLITE。当两个选项都启用时&#xff0c;URHO3D_DATABASE_ODBC优先。这些构建选项决定子系统将使用哪个数据库API。ODBC DB API更适用于本地…...

141. 周期

Powered by:NEFU AB-IN Link 文章目录141. 周期题意思路代码141. 周期 题意 一个字符串的前缀是从第一个字符开始的连续若干个字符&#xff0c;例如 abaab 共有 5个前缀&#xff0c;分别是 a&#xff0c;ab&#xff0c;aba&#xff0c;abaa&#xff0c;abaab。 我们希望知道一…...

Windows下命令执行绕过技巧总结(渗透测试专用)

一、连接符1、双引号不要求双引号闭合举例&#xff1a;"who"a"mi" //闭合的 "who"a"mi //不闭合的2、圆括号必须在两边&#xff0c;不能包括中间的字符。举例&#xff1a;((whoami))3、^符号&#xff08;转译符号&#xff09;不可以在结尾&…...

mindspore的MLP模型(多层感知机)

导入模块 import hashlib import os import tarfile import zipfile import requests import numpy as np import pandas as pd import mindspore import mindspore.dataset as ds from mindspore import nn import mindspore.ops as ops import mindspore.numpy as mnp from …...

【论文极速读】VQ-VAE:一种稀疏表征学习方法

【论文极速读】VQ-VAE&#xff1a;一种稀疏表征学习方法 FesianXu 20221208 at Baidu Search Team 前言 最近有需求对特征进行稀疏编码&#xff0c;看到一篇论文VQ-VAE&#xff0c;简单进行笔记下。如有谬误请联系指出&#xff0c;本文遵循 CC 4.0 BY-SA 版权协议&#xff0c;…...

Flask-Blueprint

Flask-Blueprint 一、简介 概念&#xff1a; Blueprint 是一个存储操作方法的容器&#xff0c;这些操作在这个Blueprint 被注册到一个应用之后就可以被调用&#xff0c;Flask 可以通过Blueprint来组织URL以及处理请求 。 好处&#xff1a; 其本质上来说就是让程序更加松耦合…...

png图片转eps格式

下载latex工具后 在要转换的png图片文件夹路径下&#xff0c;打开命令行窗口&#xff0c;输入以下命令&#xff1a; bmeps -c fig图片名.png 图片名.eps...

English Learning - L2 语音作业打卡 Day2 2023.2.23 周四

English Learning - L2 语音作业打卡 Day2 2023.2.23 周四&#x1f48c; 发音小贴士&#xff1a;&#x1f48c; 当日目标音发音规则/技巧&#xff1a;&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音[ ɔ: ]&…...

低频量化之 可转债 配债 策略数据 - 全网独家

目录历史文章可转债配债数据待发转债&#xff08;进展统计&#xff09;待发转债&#xff08;行业统计&#xff09;待发转债&#xff08;5证监会通过&#xff0c;PE排序&#xff09;待发转债&#xff08;5证监会通过&#xff0c;安全垫排序&#xff09;待发转债&#xff08;4发审…...

论文阅读_DALLE-2的unCLIP模型

论文信息 name_en: Hierarchical Text-Conditional Image Generation with CLIP Latents name_ch: 利用CLIP的层次化文本条件图像生成 paper_addr: http://arxiv.org/abs/2204.06125 doi: 10.48550/arXiv.2204.06125 date_read: 2023-02-12 date_publish: 2022-04-12 tags: [‘…...

软件测试5年,历经3轮面试成功拿下华为Offer,24K/16薪不过分吧

前言 转眼过去&#xff0c;距离读书的时候已经这么久了吗&#xff1f;&#xff0c;从18年5月本科毕业入职了一家小公司&#xff0c;到现在快5年了&#xff0c;前段时间社招想着找一个新的工作&#xff0c;前前后后花了一个多月的时间复习以及面试&#xff0c;前几天拿到了华为的…...

【软件工程】课程作业(三道题目:需求分析、概要设计、详细设计、软件测试)

文章目录&#xff1a;故事的开头总是极尽温柔&#xff0c;故事会一直温柔……&#x1f49c;一、你怎么理解需求分析&#xff1f;1、需求分析的定义&#xff1a;2、需求分析的重要性&#xff1a;3、需求分析的内容&#xff1a;4、基于系统分析的方法分类&#xff1a;5、需求分析…...

05 DC-AC逆变器(DCAC Converter / Inverter)简介

文章目录0、概述逆变原理方波变换阶梯波变换斩控调制方式逆变器分类逆变器波形指标1、方波变换器A 单相单相全桥对称单脉冲调制移相单脉冲调制单相半桥2、方波变换器B 三相180度导通120度导通&#xff08;线、相的关系与180度相反&#xff09;3、阶梯波逆变器独立直流源二极管钳…...

带你深层了解c语言指针

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍c语言中有关指针更深层的知识. 金句分享: ✨今天…...

2-MATLAB APP Design-下拉菜单栏的使用

一、APP 界面设计展示 1.新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、下拉菜单栏、坐标区,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:下拉菜单栏的使用,调整背景颜色,字体的颜色为黑色,字体的大小调为26. 2.在左侧组件库常用栏…...

七、HTTPTomcatServlet

1&#xff0c;Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 在我们日常的生活中&#xff0c;经常会使用浏览器去访问百度、京东、传智官网等这些网站&#xff0c;这些网站统称为Web网站。如下就是通…...

为什么我的Flowbite样式不生效?Tailwind CSS配置避坑与Svelte项目优化技巧

为什么我的Flowbite样式不生效&#xff1f;Tailwind CSS配置避坑与Svelte项目优化技巧 在Svelte项目中集成Flowbite组件库时&#xff0c;开发者常会遇到样式不生效的问题。这通常不是Flowbite本身的缺陷&#xff0c;而是配置环节的疏漏或构建工具的特定行为导致的。本文将深入剖…...

事件驱动RTOS EventOS的创新设计与应用实践

1. 事件驱动型RTOS的创新设计 在嵌入式系统开发领域&#xff0c;实时操作系统(RTOS)一直是关键基础设施。传统RTOS如FreeRTOS、uC/OS等大多采用基于时间片轮转的任务调度机制&#xff0c;而EventOS则开创性地采用了事件驱动架构&#xff0c;这在资源受限的嵌入式环境中具有独特…...

HeliOS:面向嵌入式设备的零上下文切换RTOS

1. 项目概述HeliOS 是一款面向资源受限嵌入式设备的轻量级、开源、免费使用的实时内核&#xff08;RTOS&#xff09;&#xff0c;其定位并非传统意义上的通用操作系统&#xff0c;而是一个高度可裁剪、零上下文切换开销的多任务调度内核。它专为 Arduino、ARM Cortex-M 等低功耗…...

嵌入式开发中回调函数的解耦实践与高级应用

1. 回调函数在嵌入式开发中的解耦实践在嵌入式系统开发中&#xff0c;模块间的耦合度直接影响着代码的可维护性和可扩展性。最近我在重构一个智能家居项目时&#xff0c;就遇到了模块间强耦合导致修改困难的问题。通过引入回调函数机制&#xff0c;成功将原本紧密交织的代码逻辑…...

维普检测升级被卡延毕?2026论文降AI急救包:4招人工微调SOP与5大工具硬核横评

论文初稿快要交了&#xff0c;维普却突然搞了个大动作&#xff0c;把系统给升级了。说实话&#xff0c;这事真挺让人头疼的&#xff0c;有人前两天查还是绿的&#xff0c;以为稳了&#xff0c;结果升级完再一测&#xff0c;AI率直接飙红。 但别慌&#xff0c;也别怀疑自己是不…...

利用爱毕业aibiye等智能软件,论文写作与编程工作流程得到革新,AI为学术研究提供新思路

文章总结表格&#xff08;工具排名对比&#xff09; 工具名称 核心优势 aibiye 精准降AIGC率检测&#xff0c;适配知网/维普等平台 aicheck 专注文本AI痕迹识别&#xff0c;优化人类表达风格 askpaper 快速降AI痕迹&#xff0c;保留学术规范 秒篇 高效处理混AIGC内容&…...

罗技鼠标宏压枪系统:从技术原理到实战应用

罗技鼠标宏压枪系统&#xff1a;从技术原理到实战应用 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 引言&#xff1a;射击游戏中的后坐力挑战 …...

全平台广告拦截神器:AdGuard扩展零门槛部署与优化指南

全平台广告拦截神器&#xff1a;AdGuard扩展零门槛部署与优化指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension 广告拦截技术已成为现代浏览器的必备能力&#xff0c;AdG…...

Linux实战——Finalshell高效连接与服务器管理

1. 为什么选择Finalshell管理Linux服务器 第一次接触Linux服务器管理时&#xff0c;我试过好几种连接工具。从最基础的Putty到Xshell&#xff0c;再到MobaXterm&#xff0c;最后发现Finalshell才是真正适合中国开发者的神器。它不仅免费&#xff0c;还集成了SSH连接、文件传输、…...

拆解 OpenHands(11)--- Runtime主要组件

本篇继续对 runtime 的解读&#xff0c;主要介绍 插件、执行系统和环境这三个组件。因为本系列借鉴的文章过多&#xff0c;可能在参考文献中有遗漏的文章&#xff0c;如果有&#xff0c;还请大家指出。0x01 三大组件本篇要介绍的几个组件如下&#xff1a;ActionExecutor&#x…...