回炉-特殊密码锁

题目:特殊密码锁

001:特殊密码锁

描述

有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。

然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。

当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。

输入

两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。
输出
至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。

样例输入

011
000

样例输出

1

解题思路:首先我们能想到的是在确保x[i]之前的数据与y[i]相同的情况下,我们可以通过改变x[i+1]来使x[i]与y[i]保持相同,最后通过比较最后一位是否相同或者比较x与y是否相同来判断两者最终的结果。这里需要注意的是x[0]的状态,x[0]的状态有两种方法来改变,一是通过改变x[1]来使x[0]改变,二是通过改变x[0]自身来改变,这里我们要分开讨论,取两种情况下的最小值作为最后的结果。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <math.h>
#include<algorithm>
using namespace std;
char a[32],b[32],c[32];
int count1=0,count2=0,a1=1e10,a2=1e10;
int len;
void switchs(int i)
{a[i-1]=a[i-1]=='1'?'0':'1';a[i]=a[i]=='1'?'0':'1';if(i<len-1)a[i+1]=a[i+1]=='1'?'0':'1';
}
int compare(int n)
{int an=0;for(int i=1;i<n;i++){if(a[i-1]!=b[i-1]){switchs(i);an++;}}return an;
}
int main()
{while(cin>>c>>b){len = strlen(c);int sign = 0;strcpy(a,c);count1=compare(len);if(!strcmp(a,b)){a1=count1;sign=1;}strcpy(a,c);a[0]=a[0]=='1'?'0':'1';a[1]=a[1]=='1'?'0':'1';count2=compare(len)+1;if(!strcmp(a,b)){a2=count2;sign=1;}if(sign)cout<<min(a1,a2)<<endl;else cout<<"impossible"<<endl;}return 0;
}

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

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

相关文章

Angular的NgModule

Angular的NgModule NgModule作为Angular模块的核心,也是组织者,官方有很长的文档来介绍他,包括每一个API。 @NgModule文件的定义方式 import { BrowserModule } from @angular/platform-browser; import { NgModule } from @angular/core;import { AppComponent } from ./ap…

回炉-拨钟问题

题目&#xff1a;拨钟问题 1166:拨钟问题 描述 有9个时钟&#xff0c;排成一个3*3的矩阵。 |-------| |-------| |-------| | | | | | | | |---O | |---O | | O | | | | | | | |-------| |-------| …

Ubuntu扩展触摸屏触控错位修复

Ubuntu扩展触摸屏触控错位修复 当我们ubuntu外接一个触摸显示器的时候&#xff0c;会发现触摸扩展屏幕&#xff0c;发现操控的是主屏幕&#xff0c;我写了一个脚本去修复。 #! /bin/bash #------------------------------------------------------------------------------ #…

目标检测与分割总结

目标检测最常用的三个模型&#xff1a;Faster R-CNN、SSD和YOLO Faster R-CNN架构 在Faster RCNN中&#xff0c;候选框是经过RPN产生的&#xff0c;然后再把各个“候选框”映射到特征图上&#xff0c;得到RoIs。 Faster R-CNN步骤&#xff1a; (1) 由输入图片产生的区域候选…

shell脚本单词去重多个文件

shell脚本单词去重多个文件 例如要求如下&#xff1a; 有多个txt文件&#xff0c;每个文件内有多行单词 中间为英文的”,”&#xff0c;或者中文的”&#xff0c;”逗号作为分隔符。 world,世界 set&#xff0c;设置 good,好&#xff0c;商品 .... 将这些文件汇总去除重复…

win10连接烟台大学校园网

第一步 右键网络图标&#xff0c;打开网络管理中心 第二步&#xff1a; 设置添加新的网络&#xff0c;方法步骤如下&#xff1a; 第三步&#xff1a;新建VPN连接&#xff0c;注意协议为L2TP 第四步&#xff1a; 第五步&#xff1a; 第六步&#xff1a; 创建结束后进入更…

Angular国际化方案

Angular国际化方案 首先和大家推荐一个xlf文件的操作工具,支持合并和编辑功能,github,到release界面下载。 对于Angular国际化,官方提供了i18n方案,也就是标签的方式,通过angular CLI来识别。国际化方案必须在编译前定义下来,所以不能动态翻译。也就是当有人切换语言时,…

模拟退火算法(TSP问题)

模拟退火算法解决TSP问题 算法思想 模拟退火算法&#xff08;Simulate Anneal&#xff0c;SA&#xff09;是一种通用概率演算法&#xff0c;用来在一个大的搜寻空间内找寻命题的最优解 模拟退火算法来源于固体退火原理&#xff0c;将固体加温至充分高&#xff0c;再让其徐徐…

2-docker 安装

2-docker 安装 Ubuntu 安装 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此&#xff0c;我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 $ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \sof…

U-Net++粗略解释

Paper&#xff1a;UNet: A Nested U-Net Architecture for Medical Image Segmentation u-net网络的基本拓扑结构 目前最先进的图像分割模型是各种个同样的 encoder-decoder架构&#xff0c;他们具有一个关键的相似性&#xff1a;skip connections&#xff0c;它可以将编码器…

Spring中的组合模式

组合模式是一种对象设计模式&#xff0c;它允许你将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使得客户端以统一的方式处理单个对象和对象的组合。在Spring框架中&#xff0c;组合模式被广泛应用&#xff0c;让我们深入分析一下。 在Spring中&#xff0c;组…

Docker+Nginx部署Angular

DockerNginx部署Angular 在部署Angular生产环境之前&#xff0c;需要电脑已经安装docker。 添加Dockerfile 在已经完成的Angular项目的项目根目录下添加Dockerfile文件。 Dockerfile文件内容&#xff1a; FROM nginx:1.11-1.11-alpine COPY index.html /usr/share/nginx/ht…

U-net网络详解

U-net网络 简单说一下网络图中各项所代表的内容&#xff1a; 蓝/白色框表示feature map(特征图) 蓝色箭头表示3x3卷积&#xff0c;主要用于特征提取 灰色箭头表示skip-connection&#xff08;跳跃连接&#xff0c;通常用于残差网络中&#xff09;,在这里是用于用于特征融合&…

Angular Web App部署Ubuntu Nginx

Angular Web App部署Ubuntu Nginx 当我们想发布Angular Web App的时候,我们想在开发的时候部署测试,那么这篇文章使用Nginx来部署我们的Angular 系统环境 lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Rele…

遗传算法-01背包

遗传算法 算法思想 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型&#xff0c;是一种通过模拟自然进化过程搜索最优解的方法。 其主要特点是直接对结构对象进行操作&#xff0c;不存在求导和函…

Angular Web App部署Linux Nginx Https

Angular Web App部署Linux Nginx Https 提示:这篇文章是基于内网的 互联网就开始将 WEB 服务从 HTTP 迁移到 HTTPS,而现在为了更快的推进 HTTPS 的普及,Chrome 将从 2018 年 7 月起标记所有的 HTTP 网站为不安全链接。 HTTPS 会逐渐成为 WEB 服务的标配,最最重要的是,它能…

SOLO算法简读

论文链接&#xff1a;https://arxiv.org/abs/1912.04488 代码链接&#xff1a;https://github.com/WXinlong/SOLO 摘要 提出一种新的实例分割方法。与语义分割等其他密集预测任务相比&#xff0c;实例分割的难度要大得多。为了预测每个实例的掩码&#xff0c;主流方法要么遵…

Rxjs的flatMap使用

Rxjs的flatMap使用 flatMap是Rxjs比较绕的一个概念&#xff0c;这里我们只是讲解如何使用。在Rxjs 4.0版本时叫flatMap,在Rxjs 5.0时被更名为margeMap,现在flatMap作为margeMap的别名使用&#xff0c;这是考虑向下兼容。 官方flatMap的定义&#xff1a; Projects each sourc…

关于Loss的简单总结

Dice Loss 参考&#xff1a;https://blog.csdn.net/l7H9JA4/article/details/108162188 Dice系数&#xff1a; 是一种集合相似度度量函数&#xff0c;通常用于计算两个样本的相似度&#xff0c;取值范围为[0,1]。 s2∣X∩Y∣∣X∣∣Y∣s \frac{2|X ∩ Y|}{|X||Y|} s∣X∣∣Y…

Angular_PWA使用+Demo

Angular_PWA使用+Demo 什么是PWA PWA(Progressive Web App)利用TLS,webapp manifests和service workers使应用程序能够安装并离线使用。 换句话说,PWA就像手机上的原生应用程序,但它是使用诸如HTML5,JavaScript和CSS3之类的网络技术构建的。 如果构建正确,PWA与原生应…