Acwing---1208. 翻硬币

翻硬币

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

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

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

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

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

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

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

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

输出格式
一个整数,表示最小操作步数

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

输入样例1:

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

输出样例1:

5

输入样2:
*o**o***o***
*o***o**o***

输出样例2:

1

2.基本思想

如果通过每次翻转两枚相邻硬币,能从状态一变为状态二,则两个状态之间必定有偶数个不同状态的硬币。

模拟法:

从最左侧开始遍历,如果该位置硬币状态与目标不同,就翻动该位置和该位置后面的两枚硬币。
因为题目说了有解,所以遍历到倒数第二枚的时候,所有硬币状态就与目标相同了。

3.代码实现

import java.io.*;public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static char[] start = new char[110], aim = new char[110];private static void turn(int i) {if (start[i] == '*') start[i] = 'o';else start[i] = '*';}public static void main(String[] args) throws IOException {start = br.readLine().toCharArray();aim = br.readLine().toCharArray();int cnt = 0;//计数for (int i = 0; i < start.length; i++)if (start[i] != aim[i]) {turn(i);turn(i + 1);cnt++;}System.out.println(cnt);}
}

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

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

相关文章

Python编程小案例—利用flask查询本机IP归属并输出网页图片

Python编程小案例—利用flask查询本机IP归属并输出网页图片 环境&#xff1a;Pycharm Mac OS 源码如下&#xff1a; from flask import Flask, render_template, requestapp Flask(__name__)app.route(/) def index():return render_template(IP查询.html)if __name__ __…

文心一言 Python编程之

给一个包含n个整数的数组nums&#xff0c;判断nums中是否存在三个元素a,b,c&#xff0c;使得abc0?请你找出所有和为0且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例1&#xff1a; 输入&#xff1a;nums[-1,0,1,2,-1,-4] 输出&#xff1a;[[-1,-1,2…

中介者模式

定义&#xff1a;中介者模式&#xff08;Mediator Pattern&#xff09;又称为调节者模式或调停者模式。用一个中介对象封装一系列的对象交互&#xff0c;中介者使各对象不需要显式的相互作用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。 适用…

如何正确选择一台大路灯?2024五大出众品牌大路灯推荐,附超全科普知识整理

大路灯的使用操作非常简便&#xff0c;而且能够提供最适合目前用眼的光线环境。但如今市场中却有一些劣质大路灯&#xff0c;它们的使用体验不佳&#xff0c;很多客户反馈说可能会出现光线不稳定、刺眼等问题&#xff0c;甚至会有让用户有损伤视力的风险。那么如何选择一台大路…

华硕ROG玩家国度幻16air 2024原装系统恢复安装教程方法

华硕ROG玩家国度幻16air 2024原装系统恢复安装教程方法 重建ASUSRECOVERY恢复功能 支持型号&#xff1a; GU605MI&#xff0c;GU605MY&#xff0c;GU605MZ GU605MV&#xff0c;GU605MU 分3种安装方法 远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1…

Spring对IoC的实现

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Qt使用QSettings类来读写ini

在Qt中&#xff0c;可以使用QSettings类来读写ini文件。QSettings提供了一个简单的接口&#xff0c;用于访问和修改ini文件中的键值对。 下面是使用QSettings类来写入ini文件的示例代码&#xff1a; #include <QCoreApplication> #include <QSettings>int main(i…

前端monorepo大仓共享复杂业务组件最佳实践

一、背景 在 Monorepo 大仓模式中&#xff0c;我们把组件放在共享目录下&#xff0c;就能通过源码引入的方式实现组件共享。越来越多的应用愿意走进大仓&#xff0c;正是为了享受这种组件复用模式带来的开发便利。这种方式可以满足大部分代码复用的诉求&#xff0c;但对于复杂…

JAVA *数据库连接池 * 接JDBC

一.介绍: 数据库连接池实际上就是一个 " 容器 " 当有多个拥护需要访问数据库的时候, 一个用户会打开一个数据库连接, 但是!当用户离开的时候,就会断开数据库连接,那么数据库连接就作废了,之后如果还有用户需要进行访问,需要再建立一个数据库连接......循环往复, …

【Mybatis】快速入门 基本使用 第一期

文章目录 Mybatis是什么&#xff1f;一、快速入门&#xff08;基于Mybatis3方式&#xff09;二、MyBatis基本使用2.1 向SQL语句传参2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型参数2.2.4 实体…

Web组态可视化编辑器 快速绘制组态

随着工业智能制造的发展&#xff0c;工业企业对设备可视化、远程运维的需求日趋强烈&#xff0c;传统的单机版组态软件已经不能满足越来越复杂的控制需求&#xff0c;那么实现Web组态可视化界面成为了主要的技术路径。 行业痛点 对于软件服务商来说&#xff0c;将单机版软件转变…

计算机视觉基础知识(十六)--图像识别

图像识别 信息时代的一门重要技术;目的是让计算机代替人类处理大量的物理信息;随着计算机技术的发展,人类对图像识别技术的认识越来越深刻;图像识别技术利用计算机对图像进行处理\分析\理解,识别不同模式的目标和对象;过程分为信息的获取\预处理\特征抽取和选择\分类器设计\分…

重拾C++之菜鸟刷算法第6篇---栈与队列

栈与队列 一、用栈实现队列 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除…

【Hadoop】使用Metorikku框架读取hive数据统计分析写入mysql

一、定义作业文件 作业文件 该文件将包括输入源、输出目标和要执行的配置文件的位置&#xff0c;具体内容如下 metrics:- /user/xrx/qdb.yaml # 此位置为hdfs文件系统目录 inputs: output:jdbc:connectionUrl: "jdbc:mysql://233.233.233.233:3306/sjjc"user: &quo…

虚拟帆船:利用技术出海的探险家

在数字化的浪潮中&#xff0c;一个新时代的探险家诞生了。他们不是在寻找未知大陆的勇士&#xff0c;而是在寻求跨界电商和全球游戏市场的先锋。这些现代探险家的帆船是由SOCKS5代理和代理IP构成的&#xff0c;他们的海图则是由数据和市场分析绘制的。 出海的第一步&#xff1a…

WebServer -- 注册登录

目录 &#x1f349;整体内容 &#x1f33c;流程图 &#x1f382;载入数据库表 提取用户名和密码 &#x1f6a9;同步线程登录注册 补充解释 代码 &#x1f618;页面跳转 补充解释 代码 &#x1f349;整体内容 概述 TinyWebServer 中&#xff0c;使用数据库连接池实现…

Linux 内核irq_stack遍历

环境Centos 4.18.0-80.el8.x86_64 一、x86架构堆栈类型说明 https://www.kernel.org/doc/Documentation/x86/kernel-stacks int get_stack_info(unsigned long *stack, struct task_struct *task,struct stack_info *info, unsigned long *visit_mask) {if (!stack)goto unk…

【深度学习笔记】计算机视觉——图像增广

图像增广 sec_alexnet提到过大型数据集是成功应用深度神经网络的先决条件。 图像增广在对训练图像进行一系列的随机变化之后&#xff0c;生成相似但不同的训练样本&#xff0c;从而扩大了训练集的规模。 此外&#xff0c;应用图像增广的原因是&#xff0c;随机改变训练样本可以…

Python + Selenium —— 下拉菜单处理!

传统的下拉菜单 Select 元素&#xff0c;由一个 Select 一系列的 option 元素构成。 <select id"source" name"source"><option value"">--请选择--</option><option value"1001">网络营销</option>&…

3.3 序列式容器-deque、stack、queue、heap、priority_queue

deque 3.1定义 std::deque&#xff08;双端队列&#xff09;是C标准模板库&#xff08;STL&#xff09;中的一种容器&#xff0c;表示双端队列数据结构。它提供了在两端高效地进行插入和删除操作的能力。与vector的连续线性空间类似&#xff0c;但有所不同&#xff0c;deque动…