牛客网刷题(牛客网刷题要钱吗)

网友投稿 339 2022-08-26


牛客网刷题(牛客网刷题要钱吗)

1. 单词接龙

单词接龙的规则是: 可用于接龙的单词首字母必须要前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接龙的单词不能重复使用。 现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙, 请输出最长的单词串,单词串是单词拼接而成,中间没有空格。 输入描述: 输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N ; 输入的第二行为一个非负整数,表示单词的个数N; 接下来的N行,分别表示单词数组中的单词。 输出描述: 输出一个字符串,表示最终拼接的单词串。 示例1 输入输出示例仅供调试,后台判题数据一般不包含示例 输入 0 6 word dd da dc dword d 输出 worddwordda 说明 先确定起始单词word,再接以d开头的且长度最长的单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出worddwordda。 示例2 输入输出示例仅供调试,后台判题数据一般不包含示例 输入 4 6 word dd da dc dword d 输出 dwordda 说明 先确定起始单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出dwordda。 备注: 单词个数N的取值范围为[1, 20]; 单个单词的长度的取值范围为[1, 30];

题解:

index = int(input()) num = int(input()) word_list = [] while num: s = input() word_list.append(s) num -= 1 start = word_list.pop(index) def ff(end, _word_list): """寻找合适的单词,并将其从 word_list 中 pop 掉""" temp = [] # [(2, 'dd'), (2, 'db'), (2, 'da')] for i in _word_list: if end == i[0]: temp.append((len(i), i)) if temp: temp = sorted(temp, key=lambda x: x[0], reverse=True) # 从大到小排列 temp_2 = [temp[0][1]] for j in temp[1:]: if j[0] == temp[0][0]: temp_2.append(j[1]) temp_2.sort() word = temp_2.pop(0) word_list.remove(word) return word else: return "" result = ff(start[-1], word_list) start += result while result: result = ff(result[-1], word_list) start += result print(start)

2. 字符串加密

给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。 当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3]。 例如:原文 abcde 加密后 bdgkr,其中偏移量分别是1,2,4,7,13。 输入描述: 第一行为一个整数n(1<=n<=1000),表示有n组测试数据,每组数据包含一行,原文str(只含有小写字母,0<长度<=50)。 输出描述: 每组测试数据输出一行,表示字符串的密文。 示例1 输入输出示例仅供调试,后台判题数据一般不包含示例 输入 1 xy 输出 ya 说明 第一个字符x偏移量是1,即为y,第二个字符y偏移量是2,即为a。

题解:

n = int(input()) dp = [0] * 50 dp[0] = 1 dp[1] = 2 dp[2] = 4 def ff(num, char): ascii_index = ord(char) # 在 ascii 中的位置 a = num + ascii_index if 97 <= a <= 122: next_char = chr(a) else: next_char = chr(97 + (a - 97) % 26) return next_char def f1(length): for i in range(3, length + 1): dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3] return dp[length - 1] for i in range(n): s = input() res = "" for index in range(len(s)): char = s[index] if index == 0: res += ff(1, char) elif index == 1: res += ff(2, char) elif index == 2: res += ff(4, char) else: num = f1(index) res += ff(num, char) print(res)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:sort and sorted用法(sorting是什么意思)
下一篇:Python函数的参数详解(python函数中的参数)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~