解题思路:该题目主要就是在每一个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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复