首页 > 其他分享 >蓝桥杯-翻转

蓝桥杯-翻转

时间:2024-03-21 15:04:52浏览次数:35  
标签:range 蓝桥 length input import data 翻转

"""
题目来源:
https://www.lanqiao.cn/problems/3520/learning/?page=1&first_category_id=1&name=%E7%BF%BB%E8%BD%AC
"""
import os
import sys
import copy

# 请在此输入您的代码
n = int(input())
# n组测评数据
data = [[] for i in range(n)]
for i in range(2 * n):
  s = list(input())
  data[i // 2].append(s)

# 对s和t翻转需要的次数
def check(s, t):
  # 如果S为''或者'0'或者'1'不需要翻转
  length = len(s)
  if length <= 3:
    return 0
  
  # 记录翻转次数
  ans = 0
  # 记录数据s和t的变化
  lis = [[s, t]]

  # 深复制, 避免在对s和t修改的过程中覆盖掉之前的记录
  s1, t1 = copy.deepcopy(s), copy.deepcopy(t)
  while s1 != t1:
    for i in range(1, len(s1) - 1):
      if s1[i] != t1[i]:
        # 可以对s进行翻转, 也可以对t进行翻转, 只要其中一个串满足翻转条件就可以
        if s1[i] != s1[i - 1] and s1[i - 1] == s1[i + 1]:
          s1[i] = t1[i]
        if t1[i] != t1[i - 1] and t1[i - 1] == t1[i + 1]:
          t1[i] = s1[i]
        ans += 1
    # 记录经过翻转后的两个串s和t
    lis.append([s1, t1])
    # 如果发现经过一轮翻转后两个串并没有发生任何变化, 说明无法通过翻转将s和t变一样
    if lis[-1] == lis[-2]:
      return -1
    s1, t1 = copy.deepcopy(s1), copy.deepcopy(t1)
  return ans

for S, T in data:
  # 在串的前后加个'*', 是为了方便可以对串的所有字符都进行一次翻转, 不影响结果
  print(check(['*'] + S + ['*'], ['*'] + T + ['*']))

标签:range,蓝桥,length,input,import,data,翻转
From: https://blog.csdn.net/weixin_60193316/article/details/136895724

相关文章

  • 蓝桥杯-百亿富翁
    """https://www.lanqiao.cn/problems/1142/learning/"""importosimportsys#请在此输入您的代码n=int(input())a=list(map(int,input().split()))#求右边第一个比其高的楼房编号defright(a,n):#单调栈stack=[]#ans[i]记录右边第一座比......
  • 第十三届蓝桥杯省赛A组
    目录试题A:裁纸刀试题C:质因数个数埃拉托斯特尼筛法求素数试题J:数的拆分题解试题A:裁纸刀分析:可以举几个例子出来发现规律是:4+(m-1)+(n-1)m;4表示边缘4刀,m-1表示横着切的数量,(n-1)m表示竖着切的数量结果:4+19+21*20=443试题C:质因数个数埃拉托斯特尼筛法求素数分析:先列......
  • revit二开中文字注释族导出cad后出现翻转的问题
    在revit中存在该一个导出cad的BUG即:revit中的文字注释族中的文字是可以有“可读”选项的,而CAD中是没有该选项的,所以会出现revit导出cad后文字翻转的情况 解决方案跟revit导出cad的机制有关,revit针对自定义族导出到cad中是这样一个机制:同一个形状只导出一个块。解决方案:将文......
  • 蓝桥杯——盾神与格子游戏(动态规划+递推)
    资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述在盾神很小很小还不会怎样编程的时候,他迷上了一款风靡一时的双人游戏!游戏双方在地上画n个格子,然后在最后一格放上一颗石头。每人每轮可以把石头向前移动1到3格,最后谁把......
  • 管道(蓝桥杯)
    有一根长度为\(len\)的横向的管道,该管道按照单位长度分为\(len\)段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。一开始管道是空的,位于\(L_i\)的阀门会在\(S_i\)时刻打开,并不断让水流入管道。对于位于\(L_i\)的阀门,它流入的水在\(T_i\)(\(T_i\geS_i\))时......
  • 2023年蓝桥杯省赛——棋盘
    目录题目链接:10.棋盘-蓝桥云课(lanqiao.cn)思路我的直接暴力思路代码实现前缀和思路前缀和:更多举例差分数组:更多举例前缀和与差分数组的关系如下代码实现 总结题目链接:10.棋盘-蓝桥云课(lanqiao.cn)思路我的直接暴力思路        我的这段Ja......
  • 蓝桥杯- 第14届模拟题第二套
     老规矩,先看外设要求......ADC,LED,LCD,KEY,EEPROM。除了EEPROM之外其它没什么新意,所以我们来看看EEPROM就可以了(其它可以在第一套模拟题中看到) /*****************************************************************************************************************/EE......
  • 第十三届蓝桥杯省赛B组
    目录试题A:排列字母试题B:寻找整数题解试题C:纸张尺寸试题D:数位排序试题E:蜂巢试题F:消除游戏暴力试题G:全排列的价值题解正解试题H:技能升级试题I:最长不下降子序列试题J:最优清零方案代码题解:滑动窗口试题A:排列字母见https://www.cnblogs.com/lushuang55/p/18069984试题B:寻找整数......
  • 如何实现照片镜像翻转(即垂直旋转)?图像翻转怎么弄?图片垂直翻转轻松解决
    一、图片镜像旋转的原理图片镜像旋转,顾名思义,就是将图片进行镜像翻转或旋转。在图像处理中,这通常是通过矩阵变换来实现的。通过构建一个变换矩阵,将图片的每个像素点映射到新的位置,从而实现镜像旋转的效果。这种变换过程遵循线性代数的原理,确保了图像在变换过程中的连续性和稳......
  • 蓝桥杯进阶03——光温显示综合应用
    一、分模块1.led和smg检测单片机上电后,8个LED灯从左到右依次点亮,然后再从左到右依次熄灭,进行LED的检测;8个数码管从左到右,逐个数码管全部段码点亮,然后再从左到右,这个数据管全部段码熄灭,进行数码管的检测。关闭蜂鸣器和继电器等无关设备。voidDisplaysmg(){ unsigned......