我是新来的,也是Python新手。所以,这是我的问题,我真的不知道从哪里开始。我创建了一个列表并写了liste.add(str(input('input a string')))
。你能帮助我吗,谢谢。
我有N strings
,目标是通过连接其中一些字符串来获得最大分数。如果我们想在字符串" A" 之后添加字符串" B" ,则应符合以下规则:
●" A" 应按字典顺序小于" B" 。
●" A" (最小长度为1)的某些后缀应与" B" 。例如:字符串“abaca”的最后三个字符与字符串“acaba”的前三个字符相同。
●在连接字符串" A" 和" B" 之后,我们获得的点数等于其重叠长度(3例如上面)
范围1≤N≤500
1≤| Si | ≤500(任何字符串的长度)
输入格式:
在第一行会有数字(字符串数)。下一行会有我们拥有的字符串(所有字符串只包含小写的英文字符)
输出格式:
在单行中,打印用户可以获得的最大分数。
示例输入:4 a ba ab acaba
样本输出:3
说明:
使用 a - acaba - ba 订单,用户可获得1 + 2 = 3分。
答案 0 :(得分:0)
首先,我继续前进,并在我的机器中运行一些示例代码以满足您的输入需求。我还冒昧地添加了一些附加功能,以确保完全满足您的输入要求。以下是我的结果:
import itertools
n = int(input('Number of strings: '))
while n not in range(1,501):
print('Error, new number needed')
n = int(input('Number of strings: '))
strings = []
a = 0
for i in range(0,n):
string = str(input('String: '))
while len(strings[a]) < len(string):
print('Error: new string must be longer than previous input')
string = str(input('String: '))
strings.append(string)
如果你注意到,我导入了itertools。这是因为如果您想要列表中的每个字符串组合,itertools将帮助您完成这些工作。我还提供了Get every combination of strings上的代码(如果你点击它,它会带你到页面),他们会在这个主题上讨论。我不是itertools的专业人士,但希望所附的代码应该是一个很好的飞跃:
S = set(['a', 'ab', 'ba'])
collect = set()
step = set([''])
while step:
step = set(a+b for a in step for b in S if len(a+b) <= 6)
collect |= step
print sorted(collect)
如果您有任何其他问题,请告诉我。快乐的节目!