刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

有一组黑白按键,每按下其中一个按键,其相邻的按键和它本身都会变成相反的颜色(黑色变白色,白色变为黑色)。

如果按下的按键非最左边和最右边按键,则其本身和左右相邻的两个按键变相反颜色;

如果按下最左边按键,则其本身和右边相邻的一个按键变相反颜色;

如果按下最右的按键,则其本身和左边相邻的一个按键变相反颜色。

给出一张“初始图”和一张“最终图”。通过按下按键,使“初始图”变为“最终图”,求最少需要按几次可以完成。

如:初始图为黑、白、黑3个按键(状态表示:010),最终图为白、白 、黑3个按键(状态表示:110)。

首先按下2号按键,3个按键颜色变为白、黑、白(状态标识:101),然后按下3号按键,3个按键颜色变为白、白、黑(状态标识:110),故使“初始图”变为“最终图”最少需要按2次。

如下图:

输入描述:

第一行输入一个由“0”和“1”组成的字符串,字符串长度为n(1<n<26),表示游戏初始图状态,“0”表示黑色按键,“1”表示白色按键

第二行输入一个由“0”和“1”组成的字符串,字符串长度为n(1<n<26),表示游戏最终图状态,“0”表示黑色按键,“1”表示白色按键

输出描述:

输出一个整数,如果通过按键不能使初始图变为最终图,则输出“0”,否则输出最少需要按几次按键可以使初始图变为最终图


样例输入:

010
110

样例输出:

2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythondef min_presses(initial, final):presses = 0i = 0while i < len(initial):if initial[i] != final[i]:if i > 0 and initial[i-1] == final[i]:if i < len(initial) - 1 and initial[i+1] == final[i]:presses += 1initial = initial[:i] + str(1 if initial[i] == '0' else '0') + initial[i+1:]else:presses += 2initial = initial[:i] + str(1 if initial[i] == '0' else '0') + str(1 if initial[i+1] == '0' else '0') + initial[i+2:]elif i < len(initial) - 1 and initial[i+1] == final[i]:presses += 1initial = initial[:i] + str(1 if initial[i] == '0' else '0') + initial[i+1:]else:presses += 2initial = initial[:i] + str(1 if initial[i] == '0' else '0') + str(1 if initial[i-1] == '0' else '0') + initial[i+1:]i += 1return presses if initial == final else 0initial = input().strip()final = input().strip()print(min_presses(initial, final))```

解析:

【喵呜刷题小喵解析】:
本题是一道字符串处理的题目,可以通过模拟按键操作来求解。

首先,我们需要定义一个函数 `min_presses`,它接受两个字符串 `initial` 和 `final`,分别表示初始状态和最终状态。函数返回最少需要按几次按键可以使初始图变为最终图。

在函数内部,我们遍历初始状态字符串 `initial` 中的每个字符,如果当前字符与最终状态字符串 `final` 中的对应字符不相等,则需要按下按键使其变为相同的颜色。

按下按键时,我们需要考虑三种情况:

1. 如果当前字符不是最左边和最右边的字符,那么按下按键后,它本身和左右相邻的两个字符都会变为相反的颜色。
2. 如果当前字符是最左边的字符,那么按下按键后,它本身和右边相邻的一个字符会变为相反的颜色。
3. 如果当前字符是最右边的字符,那么按下按键后,它本身和左边相邻的一个字符会变为相反的颜色。

根据以上三种情况,我们可以模拟按键操作,更新初始状态字符串 `initial`,并统计按下的次数。

最后,如果更新后的初始状态字符串 `initial` 与最终状态字符串 `final` 相等,那么返回按下的次数;否则,返回 0,表示无法通过按键使初始图变为最终图。

在主程序中,我们读入初始状态和最终状态,并调用 `min_presses` 函数求解最少需要按几次按键可以使初始图变为最终图,并输出结果。
创作类型:
原创

本文链接:编程实现: 有一组黑白按键,每按下其中一个按键,其相邻的按键和它本身都会变成相反的颜色(黑色变白色,

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share