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

001:特殊密码锁

001:特殊密码锁

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

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

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

输入
两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。
输出
至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。
样例输入
011
000
样例输出
1
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;


int main()
{
    char sa[32],sb[32];
    int a[32]={0},b[32]= {0},fir=1,sec=0,len;
    scanf("%s%s",sa,sb);  len=strlen(sa);
    for(int i=0; i<len; i++)
        if(sa[i]!=sb[i])
        {
            a[i]=1;
            b[i]=1;
        }
//二进制枚举   此处由于只有两钟情况,所以简化了
/*
一般的,二进制枚举可由循环 i getbit(i)进行枚举
*/ a[
0]=!a[0];a[1]=!a[1]; for(int i= 1;i<len;i++) if(a[i-1]){ fir++; a[i]=!a[i]; a[i+1]=!a[i+1]; } for(int i=1;i<len;i++) if(b[i-1]){ sec++; b[i]=!b[i]; b[i+1]=!b[i+1]; }

//


//对结果进行判断
if(a[len-1]==0&&b[len-1]==0) printf("%d",min(fir,sec)); else if(a[len-1]&&b[len-1]) printf("impossible"); else if(a[len-1]) printf("%d",sec); else printf("%d",fir); }

这题 在第一个灯确定后后面的灯都确定了 故枚举 第一个灯 开和关;只有两种情况。

    对于后面的灯来说想让其关闭,只能关闭其下一个灯。因为不能影响前面的灯,而且要把目标灯关闭

转载于:https://www.cnblogs.com/tttfu/p/10240712.html

相关文章:

  • Python定时任务 Celery+Redis
  • Matplotlib添加图例操作
  • 2019-1-10 日记
  • 【奔走相告】- Github送福利:用户可免费创建私有代码库啦
  • go语言之进阶篇方法表达式
  • Java 网络编程 之 TCP协议
  • java面试题(四)
  • Java将string内容写入到TXT文件
  • 爬虫之图片懒加载技术、selenium和PhantomJS
  • 词云制作没那么难,Python 10 行代码就实现了!
  • D-赌神(判断2^k = n时 k的值)
  • vue-router(hash模式)常见问题以及解决方法
  • 链式存储结构之静态链表
  • js简单实用的垂直导航菜单,鼠标移动触发
  • idea运行提示Error:java:无效的源发行版:1.9
  • python3.6+scrapy+mysql 爬虫实战
  • 2017-08-04 前端日报
  • bearychat的java client
  • Cookie 在前端中的实践
  • Docker: 容器互访的三种方式
  • IndexedDB
  • Js基础知识(四) - js运行原理与机制
  • leetcode46 Permutation 排列组合
  • Making An Indicator With Pure CSS
  • nodejs:开发并发布一个nodejs包
  • python docx文档转html页面
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 程序员该如何有效的找工作?
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 构建工具 - 收藏集 - 掘金
  • 判断客户端类型,Android,iOS,PC
  • 前嗅ForeSpider教程:创建模板
  • 使用API自动生成工具优化前端工作流
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我的面试准备过程--容器(更新中)
  • 用mpvue开发微信小程序
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ###C语言程序设计-----C语言学习(6)#
  • #控制台大学课堂点名问题_课堂随机点名
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (31)对象的克隆
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C++)八皇后问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (十五)使用Nexus创建Maven私服
  • (转)linux下的时间函数使用
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ../depcomp: line 571: exec: g++: not found