2013蓝桥杯真题省赛翻硬币 C语言/C++

news2024/9/19 10:45:32

[蓝桥杯 2013 省 B] 翻硬币

题目背景

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

题目描述

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果同时翻转左边的两个硬币,则变为 oooo***oooo。现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

输入格式

两行等长字符串,分别表示初始状态和要达到的目标状态,每行长度小于 1000 1000 1000

数据保证一定存在至少一种方案可以从初始状态和要达到的目标状态。

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

5

样例 #2

样例输入 #2

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

样例输出 #2

1

提示

source:蓝桥杯 2013 省 B 组 H 题

所需变量

int arr[2][1005];//用于存储初始状态和终止状态硬币的状况

int sum = 0;//用于记录翻转次数

int i;//循环变量

int control = 0;//用于记录这个字符串的长度

思路:我们首先仔细分析不难发现,就是遍历,如果遇到两个不一样的我们就开始翻转,顺带着后面一个也跟着翻转,直至到结束都翻转过来!
首先是将字符串读入,我的做法是一个一个字符的读取,读入代码如下:

for(i = 0;i<2;i++){
    control = 0;
    while(~scanf("%c",&temp)){
        if(temp == '\n'){
            break;
        }
        if(temp == '*'){
            arr[i][control] = 1;
        }else{
            arr[i][control] = 0;
        }
        control++;
    }
}

将字符读入之后就开始进行比较,如果发现不一样,就是必须得翻转,然后下一个也是跟着翻转!部分代码如下:

for(i = 0;i<control;i++){
    if(arr[0][i] != arr[1][i]){
        sum++;
        arr[0][i] = (arr[0][i]+1)%2;
        arr[0][i+1] = (arr[0][i+1]+1)%2;
    }
}

最后将初始状态翻转得到最终状态我们就算完成,因此完整代码如下(编译器是dev,语言是C语言):

#include<iostream>
using namespace std;
int main(){
    int arr[2][1005],sum = 0,i,control = 0;
    char temp;
    for(i = 0;i<2;i++){
        control = 0;
        while(~scanf("%c",&temp)){
            if(temp == '\n'){
                break;
            }
            if(temp == '*'){
                arr[i][control] = 1;
            }else{
                arr[i][control] = 0;
            }
            control++;
        }
    }
    for(i = 0;i<control;i++){
        if(arr[0][i] != arr[1][i]){
            sum++;
            arr[0][i] = (arr[0][i]+1)%2;
            arr[0][i+1] = (arr[0][i+1]+1)%2;
        }
    }
    cout<<sum<<endl;
    return 0;
}

在这里插入图片描述

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

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

相关文章

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区&#xff0c;游戏内容则是社区内受众较为广泛的存在&#xff0c;而星铁作为面向年轻群体的回合制游戏&#xff0c;自然是赢得B站核心用户群体的青睐。 4月26日&#xff0c;暌违已久的手游《崩坏&#xff1a;星穹铁道》&#xff08;后文简称…

【Java】平时开发中遇到的问题你是否遇到过?

文章目录 前言一、六类典型空指针问题1.1包装类型的空指针问题1.2 级联调用的空指针问题1.3 Equals方法左边的空指针问题1.4 ConcurrentHashMap 这样的容器不支持 Key&#xff0c;Value 为 null。1.5 集合&#xff0c;数组直接获取元素1.6 对象直接获取属性 二、日期YYYY格式设…

Linux和UNIX的关系及区别(详解)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中&#xff0c;UNIX 诞生于 20 世纪 60 年代末&#xff0c;Windows 诞生于 20 世纪 80 年代中期&#xff0c;Linux 诞生于 20 世纪 90 年代初&#xff0c;可以说 UNIX 是操作系统中的"老大哥&…

Fortinet FortiNAC RCE漏洞复现(CVE-2022-39952)

0x01 产品简介 FortiNAC(Network Access Control) 是Fortinet的一种零信任网络访问控制解决方案&#xff0c;可增强用户对企业网络上的物联网 (IoT) 设备的监控。NAC 是零信任网络访问安全模型的重要组成部分&#xff0c;在该模型中&#xff0c;IT 团队可以轻松了解正在访问网络…

低代码让开发变得不再复杂

文章目录 前言低代码 VS 传统开发为什么选择IVX&#xff1f;平台比对总结 前言 在数字化的时代背景下&#xff0c;企业都面临巨大的数字化转型的挑战。为了应对这样的挑战&#xff0c;企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生&#xff0c;成为了…

面向对象编程与面向过程编程的区别

面向过程&#xff1a; 以坦克飞机大战为例&#xff0c;如果按面向过程的思路去书写代码&#xff0c;则需要按如下顺序进行编码&#xff1a; 游戏初始化确定一台坦克的位置绘制坦克确定多架飞机的位置绘制飞机为坦克设置上下左右四个转向为坦克添加按下键盘k键发射子弹为所有飞…

ATFX国际:国内成品油价格下调,国际油价仍维持震荡态势

ATFX国际&#xff1a;5月16日&#xff0c;发改委发布成品油价格下调通知&#xff0c;其中提到&#xff1a;国内汽、柴油价格每吨分别降低380元和365元。以上海地区为例&#xff0c;价格下调后&#xff0c;每吨汽油的售价为9255元&#xff0c;每吨柴油的价格为8225元。经计算&am…

【容器适配器的认识与模拟】

目录&#xff1a; 前言一、引入二、容器适配器&#xff08;一&#xff09;stackdequestack模拟实现 &#xff08;二&#xff09;queuequeue模拟实现为什么栈和队列要使用deque &#xff08;三&#xff09;priority_queuepriority_queue模拟实现 总结 前言 打怪升级&#xff1a…

小程序获取用户信息实现一键登录

文章目录 旧版获取用户信息实现登录流程login页面代码个人中心页面代码全局app.vue代码下面是小程序获取用户信息最新调整的方式 温馨提示 &#xff1a;以下小程序登录方式只适用于2.27.1版本库以下使用 详情请看微信官方文档调整 旧版获取用户信息实现登录流程 由于我是在hbu…

公司招了一个腾讯拿30K的人,让我见识到了什么是天花板···

前言 人人都有大厂梦&#xff0c;对于软件测试人员来说&#xff0c;BAT 为首的一线互联网公司肯定是自己的心仪对象&#xff0c;毕竟能到这些大厂工作&#xff0c;不仅薪资高待遇好&#xff0c;而且能力技术都能够得到提升&#xff0c;最关键的是还能够给自己镀上一层金&#…

Linux系统防火墙iptables(你委屈什么,爱而不得的又不止你一个)

文章目录 一、iptables防火墙概述1.简介2.netfilter/iptables关系3.iptables的四表五链&#xff08;1&#xff09;四表&#xff08;2&#xff09;五链 4.数据包过滤的匹配流程&#xff08;1&#xff09;入站&#xff08;2&#xff09;转发 二、iptables防火墙配置1.下载相关服务…

一个有点好用的信息收集工具

功能 domainscan 调用 subfinder 被动收集&#xff0c;调用 ksubdoamin 进行 dns 验证 泛解析、CDN 判断 获取 domain 相关的 web&#xff08;host:port&#xff09;资产&#xff0c;使用 webscan 扫描 webscan 支持 http/https scheme 自动判断 获取 statusCode、contentL…

OpenAI新作Shap-e算法使用教程

一、知识点 Shap-e是基于nerf的开源生成3d模型方案。它是由如今热火朝天的Open AI公司&#xff08;chatgpt&#xff0c;Dell-E2&#xff09;开发、开源的。Shap-e生成的速度非常快&#xff0c;输入关键词即可生成简单模型&#xff08;限于简单单体模型&#xff09;。 二、环境…

TFTLCD显示实验

实验内容 通过 STM32 的 FSMC 接口来控制 TFTLCD 的显示。 TFTLCD简介 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为&#xff1a;Thin Film Transistor-Liquid Crystal Display。TFT-LCD 与无源 TN-LCD、STN-LCD 的简单矩阵不同&#xff0c;它在液晶显示屏的每一个象素上都…

Docker笔记7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库?

7 | 如何使用 Docker Compose 搭建一个拥有权限 认证、TLS 的私有仓库&#xff1f; 1 准备工作2 准备站点证书2.1 创建CA私钥2.2 创建CA根证书请求文件2.3 配置CA根证书2.4 签发根证书2.5 生成站点SSL私钥2.6 私钥生成证书请求文件2.7 配置证书2.8 签署站点SSL证书 3 配置私有仓…

一五一、web+小程序骨架屏整理

骨架屏介绍 请点击查看智能小程序骨架屏 车载小程序骨架屏 车载小程序为方便开发者设置骨架屏&#xff0c;在智能小程序的基础上抽取出骨架屏模板&#xff0c;开发者只需要在 skeleton 文件夹下配置config.json&#xff08;page 和骨架屏的映射关系文件&#xff09;即可生效骨…

web自动化测试进阶篇02 ——— BDD与TDD的研究实践

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

Apollo oracle适配

前言&#xff1a;公司数据库统一切换为oracle&#xff0c;减少部署mysql&#xff0c;现需要将Apollo的数据库做oracle适配&#xff0c;当前使用版本为Apollo2.0.0&#xff0c;网上找到最新版本的适配oracle的版本也仅为1.4.0&#xff0c;现决定自己适配。 部分参考了官方介绍的…

使用FFMPEG加载外挂或内封字幕小记

ffmpeg版本&#xff1a; FFMEPEG 4.4 继上一篇实现音视频播放器后&#xff0c;将加载字幕的过程和遇到的坑记录如下&#xff1a; 字幕初识 视频字幕分为三种。 内嵌字幕&#xff0c;字幕与视频图像合二为一&#xff0c;成为视频帧的一部分&#xff0c;也叫硬字幕。 内封字…

数据库完整性

完整性概述 数据库的完整性是指数据库的正确性、一致性、相容性 正确性&#xff1a;数据库的数据符合语义约束 一致性&#xff1a;数据间的逻辑关系是正确的&#xff0c;从一个一致性状态转移到另一个一致性状态 相容性&#xff1a;同一事物的两个数据应当是一致的 约束的分类…