defAllinall(s,t):#s-->t??
index = -1for ch in s:
index = t.find(ch,index+1)
if(index == -1):print('NO');returnFalse
print('YES')
Allinall('dc','abcde')
defBox(L,W):defmysort():for i in range(6):
if(L[i]<W[i]):L[i],W[i] = W[i],L[i]
mysort()
X = [(L[i],W[i]) for i in range(6)]
Count = {}
for each in X:
if str(each) notin Count:
Count[str(each)] = 1else:Count[str(each)] += 1if(len(Count)==3):
print(Count)
for each,val in Count.items():
if(val != 2):print('Impossible 4');return
print('Possible')
elif(len(Count)==2):
test = [x for k,x in Count.items()]
test.sort()
if (test!=[2,4]):print('Impossible 8');return
print('Possible')
elif(len(Count)==1):
for each,val in Count.items():
if(Count[each]!=6):print('Impossible 12');return
print('Possible')
else:print('Impossible');return
Box([3,3,4,4,4,4],[3,3,5,3,3,3])
defKickdown(h1,h2):
n1 = len(h1);n2 = len(h2)
defgeth(i):if(i>=n1):return0else: return h1[i]
defgeth2(i):if(i>=n2):return0else: return h2[i]
for i in range(n1+1):
if(geth(i)+h2[0]<=3):
test = Truefor j in range(1,n2):
if(geth(i+j)+h2[j]>3):test = False;breakif(test):ans1 = max(n2+i,n1);breakfor i in range(n2+1):#遍历n2if(h1[0]+geth2(i)<=3):
test = Truefor j in range(1,n1):
if(h1[j]+geth2(i+j)>3):test = False;breakif(test):ans2 = max(n1+i,n2);break
print(min(ans1,ans2))
UVA232:题目就不写了,主要是模拟单词的变换.注意必须要按照启示格的顺序来输出.在输出竖的单词时候要用一个矩阵来标记是否被访问过.当然还可以按照竖的方式写入然后再排序.def cross(matrix,r,c): mark = [[0]*c for i in range(r)] def test(i,j):#检查一个白格是不是启示格 #if(matrix[i][j