为什么这个程序对于几个输入是无限的,比如图片中的



区块报价

for _ in range(int(input())):
s1,s2,x=input(),input(),input()
l=[]
c=1
a=0
k=0
while(k<len(s1)):
if(s1[0:k+1] in x):
a+=1
k+=1
print(s1[0:k])
l.append((s1[0:k],""))
b=0
k=0
while(k<len(s2)):
if(s2[0:k+1] in x):
b+=1
k+=1
print(s2[0:k])
l.append(("",s2[0:k]))
for i in range(len(s1)):
for j in range(len(s2)):
if s1[0:i+1]+s2[0:j+1] in x and (s1[0:i+1],s2[0:j+1]) not in l:
c+=1
l.append((s1[0:i+1],s2[0:j+1]))
print(s1[0:i+1]+s2[0:j+1])
print(i,j)
print(a+b+c)
#print(a)
#print(b)
#print(c)

在这段代码中,当我传递某些输入时,它会变为无穷大,即1[1:https://i.stack.imgur.com/S29Zs.png][1]aabbab我已经卡住了它对其他输入集运行良好,但对这个输入集无限循环回答为什么

Sample input:
3
ab   #working fine for this input set
bc   #working fine for this input set
abc  #working fine for this input set
aa   #not working for this input set
bb   #not working for this input set
ab   #not working for this input set
aab  #working fine for this input set
acb  #working fine for this input set
bcaabacbc  #working fine for this input set
Sample output: 7 4 11

问题说明:给定3个字符串S1、S2和X,求不同有序字符串对的数量(P,Q),使得:字符串P+Q是X的子字符串。字符串P是S1的某个前缀(可能为空)。字符串Q是S2的某个前缀(可能为空)。字符串的子字符串是该字符串的连续子序列。例如;厨师;是"的子串;"代码厨师";,但是";def";不是。此外,空字符串是任何字符串的子字符串。字符串S的前缀是出现在S的开头。例如;代码";是"的前缀;"代码厨师";,但是";厨师;不是。此外,空字符串是任何字符串的前缀"问题陈述"。在第一个while循环中,我正在检查字符串s1,在第二个while环路中,我在检查字符串s2,以及在嵌套for循环中,s1和s2的组合。

在第一个while循环中说:while(k<len(s1)),只有当该循环创建的子字符串存在于x字符串中时,k才会递增。由于在第一次迭代之后创建的子串是"0";aa";它不存在于x中,k的值不递增。但是只有当k的值大于s1的长度时,循环才会结束,所以它永远不会结束,并被困在while循环中。

相关内容

  • 没有找到相关文章

最新更新