题解 | #矩阵乘法计算量估算#
矩阵乘法计算量估算
https://www.nowcoder.com/practice/15e41630514445719a942e004edc0a5b
juzhenshu=int(input())
juzhenlist=[]
for i in range(juzhenshu):
juzhen=list(map(int,input().split(" ")))
juzhenlist.append(juzhen)
juzhenname="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
yunsuan1=list(input())
yunsuan2=[]
def zuili(yunsuan,c):
bijiao=[]
indexlist=[]
for i in range(len(yunsuan)):
if yunsuan[i].isalpha():
indexlist.append(i)
count=0
for a in range(0,i):
if yunsuan[a]=="(":
count+=1
bijiao.append(count)
index1=indexlist[bijiao.index(max(bijiao))]
if c==yunsuan[index1]:
return True
else:
return False
def chengfa(yunsuan):
if len(yunsuan)==1:
print(sum(yunsuan2))
return
else:
for i in range(len(yunsuan)):
if i+1<len(yunsuan):
if yunsuan[i].isalpha() and yunsuan[i+1].isalpha():
index1=juzhenname.index(yunsuan[i])
index2=juzhenname.index(yunsuan[i+1])
jieguo=juzhenlist[index1][0]*juzhenlist[index1][1]*juzhenlist[index2][1]
yunsuan2.append(jieguo)
juzhenlist[index1][1]=juzhenlist[index2][1]
yunsuan.pop(i+1)
chengfa(yunsuan)
for i in range(len(yunsuan)):
if i+1<len(yunsuan):
if yunsuan[i].isalpha() and yunsuan[i-1]=="(" and yunsuan[i+1]==")" and zuili(yunsuan,yunsuan[i])==True:
yunsuan.pop(i-1)
yunsuan.pop(i)
chengfa(yunsuan)
elif i<len(yunsuan):
if yunsuan[i].isalpha() and yunsuan[i-1]=="(" and zuili(yunsuan,yunsuan[i])==True:
yunsuan.pop(i-1)
chengfa(yunsuan)
chengfa(yunsuan1)
查看23道真题和解析