21计科程一帆


私信TA

用户名:uq_88617846948

访问量:2901

签 名:

搞哥毛哥在上,俺寻思俺是一个最大最强的技术小子

等  级
排  名 1154
经  验 3030
参赛次数 2
文章发表 52
年  龄 19
在职情况 学生
学  校 石河子大学
专  业 计算机科学与技术

  自我简介:

憨憨一个,欢迎大佬指正

解题思路:该题目主要就是在每一个jam数字中,要从右往左遍历,当遍历到的那一位满足list[i]+t-1-i<t的时候才能加一并且更改后续字母,不然无法满足从左往右依次递增的要求,为了解题方便,可以利用ord()函数将每一个字母经过简单的运算得到其对应的数字替换在原本的列表中,然后得出下一位jam数字后替换jam数字重复运算,为了实现该一步的复用,可以将运算过程放在函数中

注意事项:遍历的时候不要搞错下标,输出的时候五次循环就能够输出,无需进一步逻辑判断,因为该题目中即使下一个运算得出的jam数字与上一步相同,在测试样例中应该也是给足了五个的,这一点已经过笔者验证

参考代码:

def jam(a,b,c,d):
   list1 = [i for i in d]
   for i in range(len(list1)):
       list1[i] = ord(list1[i]) - ord('a') + 1  # 转换为数字
   for i in range(len(list1) - 1, -1, -1):  # 从右往左遍历
       if list1[i] + (c - 1 - i) < b:
           list1[i] += 1  # 满足条件后加一
           if i < len(list1) - 1:
               for j in range(i + 1, len(list1)):
                   list1[j] = list1[i] + (j - i)  # 后面的字母转换为紧接着第i个的递增
           break
   for i in range(len(list1)):
       list1[i] = list1[i] - 1 + ord('a')
       list1[i] = chr(list1[i])
   return (''.join(list1))
a,b,c=map(int,input().split())
d=input()
for i in range(5):
   e=jam(a,b,c,d)
   print(e)
   d=e

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区