蓝桥杯题目——翻硬币无需修改‘*’与’o‘的特殊解法及其所包含的思想 环球聚焦
前言
本文介绍蓝桥杯题目——翻硬币的一种无需对字符串进行操作的解法及该解法所包含的思想。
(资料图片)
题目信息
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作。
输入格式
两行等长的字符串,分别表示初始状态和要达到的目标状态。
输出格式
一个整数,表示最小操作步数
数据范围
输入字符串的长度均不超过100。
数据保证答案一定有解。
输入样例
**********o****o****输出样例
5解题思维
假设这样一组输入:
**********o*********因为每次要翻动两个硬币,想单独地把第一个硬币变成o,就一定会带来副作用(影响其他的硬币),即使这个硬币不在第一个位置。
也就意味着我们用任何方法也不能单独地将一个硬币反转,必须要有另一个同样需要反转的硬币。
因此,题目给的数据中,两个字符串不同之处的数量一定为偶数,否则第一个字符串无论怎样翻转也不能达到第二个字符串(目标)的状态。
思想(1)
因为每个硬币只有正、反两种可能,所以一组硬币(一次反转两个,因此称两个硬币为一组)如果已经被反转一次了,如果再将其反转回来,就会使得这两次反转都无意义。
一般地说,就像同类费解的开关和点灯这种每个位置只有两种选择的问题一样,同一个位置,操作两次,都是无意义的。
在本题中,同一组硬币,我们最多只会翻转一次,拿题目给出的数据举例,我们的目的是把一号和六号的硬币反转成为o。
第一次,我们反转前两个。
第二次,我们的目的是将2号的o变成*,因为1和2这一组已经被反转一次,因此第二次我们只能选择2和3这一组。
第三次,目的是反转3号,但23这一组已被反转,因此只能反转34这一组。
第四次,同理,只能反转45这一组。
第五次,当反转56这一组时会发现,反转后的状态刚好就是我们所求的状态,这正是刚才解题思维中说到的有另一个需要反转的硬币(6号)来弥补之前的硬币(1号)反转所带来的副作用。
此时你会发现,从1号到6号,其包含的每一组我们都反转了一次,其间的每一个硬币我们都反转了两次,只有这样才能刚刚好使得两个不同之处变为相同。
原因:其间的硬币反转两次,相当于没反转;其包含的最开始和最后一个硬币,只反转了一次,因此改变的正反面。
因此,对于这题我们只需要找到每两个不同之处之间有多少个硬币,就可以推算出将这两个不同之处同时反转,需要消耗几步。
思想(2)
如果做题时没有发现每同时反转两个不同之处所消耗的步数等于其间的硬币数+1这条规律,那么大概率会用模拟法做,那无疑就使代码更加复杂。
一数曾说过下文类似的一句话:像这种看起来很简单,但是数据很大,暴力法做不了的;看起来像一般性题,但一般性方法做不了的,通常在题目中都有隐含的条件没有发现,一旦发现,此类题目将特别简单。
代码实现
首先,写出主函数和用来输入输出的函数。
int main(){char str1[120];gets_s(str1);char str2[120];gets_s(str2);int time =sta(str1, str2);printf("%d", time);return 0;}随后对sta函数进行实现。
我们要统计的数目是每一组不同之处之间的硬币数,因此设置一个变量flag,当其为1时代表遇到了一组不同中的第一个不同,此时开始统计数目,当其为-1时,代表遇到了一组不同中的第二个不同,此时不统计数目。
int sta(char* str1, char* str2){int count = 0;int flag = -1;//是否开启统计while (*str1 != "\0"){if (*str1 != *str2){flag *= -1;}if (flag==1){count++;}str1++;str2++;}return count;}可见,代码中并没有对字符串的任何操作,极大地减轻了代码量。
思想(3)
在实现sta函数时,并没有将flag的初始值设为0,而是设为了-1。
这样做可以在开启或关闭统计时直接让其乘以-1即可,不用再判断flag此时是哪一种情况。
亦或者在用模拟法的时候,表示正面,o 表示反面,那么你在反转时要先判断当前位置是 还是 o,但是如果用1表示正面,-1表示反面,你在反转的时候不需要判断,只需要让其乘以-1即可。
亦或者像费解的开关那样,用1表示开,0表示关,这样你在打开或关闭的时候,只要让其赋值为自身的非即可,不必额外判断当前的情况。
感谢您的阅读与耐心~ 如有错误烦请指出~ 谢谢
标签: 编程算法
- 蓝桥杯题目——翻硬币无需修改‘*’与’o‘的特殊解法及其所包含的思想 环球聚焦
- 什么的阳光填空形容词_什么的阳光填空 今日热议
- 世界最新:宝格丽陶瓷项链有几种?宝格丽陶瓷项链款式介绍
- 同为状元又球风相似,欧文和艾弗森全数据对比,才发现他被高估了 世界焦点
- 任务管理器在哪里找_任务管理器在哪里
- 全球简讯:4.82秒!13岁女孩打破世界纪录
- 全球播报:做好软文营销推广4个 步骤!
- 慈鲷鱼养殖需要什么温度 慈鲷鱼的饲养方法 环球关注
- 每日资讯:国际热评:竞争不应是中美关系主要底色
- 世界快讯:上海交通继续教育学院怎么样_上海交通继续教育学院
- 上海十大夜市小吃街排行榜 上海最热闹的美食夜市排行榜|最新消息
- 男子投资100万 6年亏成1.99万!法院判了:基金公司赔钱
- 庆阳市西峰区 甜瓜大棚育苗忙
- 生活中的大数有哪些
- 天天速读:地方政府刺激楼市“自选动作”,小阳春能如约而至吗?
- [新浪彩票]足彩23016期盈亏指数:西布朗客胜不稳_全球快看点
- 【新视野】笑脸符号特殊符号_笑脸符号
- 扬子巷 环球讯息
- 测试你的另一半姓名可能会叫什么_环球报道
- 晋宁区羊肚菌开出绿色经济“致富伞”
- 伏特加多少度最高_伏特加多少度|世界微速讯
- 每日关注!投资82.91亿元!云南重拳整治九大高原湖泊124条入湖河道
- 2023黑珍珠餐厅指南发布,上海66家餐厅上榜位居全国第一
- 我会叫他们好受的!堕落天使莫甘娜的名字大全
- 中使馆提醒在土耳其中国公民注意防范余震和次生灾害|全球快资讯
- 中建三局拟发行50亿元超短期融资券|环球时讯
- 喊组词喊的组词喊字怎么组词
- 世界快资讯丨北京春季首场高校毕业生线下双选会举行
- 全球资讯:平安产险河南分公司积极开展金融知识普及暨《反电信网络诈骗法》宣教活动
- 率领的近义词是什么 热议
- 福清推行“党建引领 乡贤补位”基层治理模式
- 怎样成绩提高_提高成绩有什么方法 天天讯息
- 分布操作系统基本特点有_分布操作系统基本特点
- 银行纷纷下调存款利率意味着什么 原因是什么|天天观察
- 1mol氯化钠摩尔质量_氯化钠摩尔质量
- 精彩看点:新型冠状病毒优秀作文800字精选10篇
- C忆奶茶
- 除夕经典古诗词15首
- 总投资超660亿元 成都市48个工业项目集中开工-环球实时
- DéJOJOez
- 2022年贵州高考分数线一览表(最新发布)
- 焦点播报:莫让上网“青少年模式”成鸡肋
- 电脑键盘突然失灵怎么解决_电脑键盘突然失灵怎么回事
- 松鼠的英文是什么 焦点热讯
- 红糖姜茶怎么熬最有效_红糖姜茶怎么熬
- 你好,我是一个公司普通职工,能办理信用卡吗-天天速看料
- 热爱家乡的作文|全球独家
- 盘中异动 | 华宝中证港股通互联网ETF跌2.33%|全球最新
- 最新快讯!掌阅科技2月8日盘中跌幅达5%
- malocclusion 每日聚焦
- 每日简讯:正能量晚安句子
- NFG
- 重庆南岸区截止11月12日11时最新疫情消息今天实时数据通报:新增本土确诊病例11例、本土无症状感染者93例 最新消息
- pnede
- 天然色素有哪些
- 当前时讯:千年花城素馨留香,广州越秀首届“素馨佳人”惊艳亮相
- 2022年全国新开工改造城镇老旧小区5.25万个-今日精选
- 约会大作战3多久更新
- 天天精选!魏大勋几岁今年多大年龄_魏大勋多大年龄了
- 2023年邓州市人民医院儿童康复救助项目申请
- 世界聚焦:114查号台是干嘛的_114查号台
- 热点在线丨科学发展观重要意义
- 冰糖雪梨隔夜能喝吗_冰糖雪梨隔夜可不可以饮用_新资讯
- 有棵树董秘回复:目前公司邮件自动回复系统研发项目已通过关键词句管理统计等技术实现_世界报资讯
- 每日热讯!黎平县2022年全年GDP数据发布公告
- 悲观情绪逐渐消散!萨默斯之后,高盛也认为美国“衰退概率变小”-全球消息
- 【世界时快讯】山梨糖醇是什么糖尿病人能吃吗_山梨糖醇是什么
- 万寿宫石龟 全球今亮点
- 全球看热讯:浮生啥意思_浮生辞什么意思
- 天天即时:俄罗斯旅游购物必买清单_俄罗斯旅游购物
- 勾女术咒语_最灵的勾女法术
- 北京保利2022秋拍丨霁红釉杯一对_当前热门
- 上海志铭投资有限责任公司
- 印尼第四季度GDP同比增长5.01%-今日视点
- 萝卜炖牛肉
- 新加坡旅游业界积极准备 期待中国游客的到来
- 金立网站_天天热点
- 今日热文:三十而立四十而不惑五十知天命六十花甲七十古稀
- 正方形 当前热闻
- 有高血压的人,可以长期服用比索洛尔吗,需要注意什么?|精彩看点
- 台球厅经营情况_台球厅经营
- 世界历史视野中的中国发展话语
- 东城区新天下社区学雷锋志愿服务队
- 环球观速讯丨“滚”元宵VS“包”汤圆 极地动物过元宵节也有南北之分
- 今天最新消息 国内期货市场首个标准仓单登记查询系统上线
- 大岛茂
- 环球观热点:剑川木雕
- iphone手机怎么传输数据
- 内蒙古:跨省协作聚人才
- 全国哪里的枸杞最好?青海的枸杞只能排第2,建议男人多了解一下
- 每日看点!“种猪”这一生要付出些什么?虽然有妻有子,但一辈子见不到他们
- 世界微速讯:侠盗一枝梅
- 三英
- 天天热讯:多普达c730和诺基亚612_多普达c720w
- 环球滚动:许家印最新情况:前半生辉煌已落幕,后半生寄希望在恒大集团!
- 中学信息学 计算机基础 初级版
- 六场大秀!百场活动!千个文化圈!今年元宵,浙江宁波交关闹热_当前通讯
- 百事通!四川公示一款国产新冠治疗药品首发报价
- 中考亮剑·中考真题分类汇编:数学2011 热点评
- 要闻速递:新成长的烦恼第二季
广告
广告
- 各种花样打“功效宣传”擦边球 消炎止血又美白的牙膏真有效吗?
- 黑龙江讷河新增1例确诊4例无症状 病例详情公布
- 浙江宁波余姚奉化宁海三地开展核酸检测 结果均为阴性
- 浙江湖州南浔三处棋牌室经营者被行拘
- 那年今日 | 一张漫画涨知识之12月13日
- 在宁波乘火车跨省出行须持48小时内核酸阴性证明
- 浙江温州一地发现核酸弱阳性?复采复检结果均为阴性
- 浙江三门发现一名密接者:二次核酸检测结果均为阴性
- 贱卖的发电机 新买的制茶机——安徽水电供区改革两周年回访见闻
- 浙江杭州新增1例新冠肺炎确诊病例 为集中隔离人员
- 2022年研考在即,学硕缩招,专硕时代真的来了?
- 探访杭州核酸检测点:排队高峰多在夜间 医院24小时运转
- 浙江发挥零售药店“哨点”作用 织就疫情防控监测网
- 哈尔滨市本轮疫情首批1名确诊患者出院
- 宁波镇海第三轮全员核酸检测574181人 结果均为阴性
- 陕西新增本土确诊病例1例、境外输入无症状感染者2例
- 齐齐哈尔讷河一地调整为中风险地区
- 浙江新增新冠肺炎确诊病例75例 其中本土74例
- 内蒙古新增本土确诊病例5例 均在呼伦贝尔满洲里市
- 黑龙江无新增确诊病例 新增本土核酸检测初筛阳性人员5例










