Dies ist die zweite Frage der Vergangenheit.
Es war nicht lange letzte Nacht, also füllte ich eine einfache Zeit aus.
Für drei aufeinanderfolgende müssen Sie nur zwei aufeinanderfolgende zweimal vergleichen (wenn Sie die Vergleichsmethode ändern und einen ternären Operator verwenden, ist dies wie folgt).
answerA.py
n=input()
x=[int(i) for i in n]
if (x[0]==x[1] and x[1]==x[2]) or (x[1]==x[2] and x[2]==x[3]):
print("Yes")
else:
print("No")
answerA_better.py
n=input()
x=[int(i) for i in n]
print("Yes" if x[1]==x[2] and (x[0]==x[1] or x[2]==x[3]) else "No")
Drehen Sie einfach die Schleife und denken Sie in der richtigen Reihenfolge von vorne. Der zweite ist der kürzere Code
answerB.py
n=int(input())
k,l=2,1
for i in range(n-1):
m=l
l=k+l
k=m
print(l)
answerB_better.py
k,l=-1,2
for i in [0]*int(input()):k,l=l,k+l
print(l)
Ich habe einen sehr langen Code geschrieben, aber am Ende gibt es nur 8 Möglichkeiten ...
answerC.py
a,b,c,d=[int(i) for i in input()]
l=7-a
f=[-1,-1,-1]
for i in range(2):
for j in range(2):
for k in range(2):
l_sub=l
if i==0:
l_sub-=(b)
else:
l_sub-=(-b)
if j==0:
l_sub-=(c)
else:
l_sub-=(-c)
if k==0:
l_sub-=(d)
else:
l_sub-=(-d)
if l_sub==0:
f=[i,j,k]
if f!=[-1,-1,-1]:
break
if f!=[-1,-1,-1]:
break
s=str(a)
if f[0]==0:
s+="+"
else:
s+="-"
s+=str(b)
if f[1]==0:
s+="+"
else:
s+="-"
s+=str(c)
if f[2]==0:
s+="+"
else:
s+="-"
s+=str(d)
s+="=7"
print(s)
answerC_better.py
a,b,c,d=[int(i) for i in input()]
if a+b+c+d==7:
print("{}+{}+{}+{}=7".format(a,b,c,d))
elif a+b+c-d==7:
print("{}+{}+{}-{}=7".format(a,b,c,d))
elif a+b-c+d==7:
print("{}+{}-{}+{}=7".format(a,b,c,d))
elif a-b+c+d==7:
print("{}-{}+{}+{}=7".format(a,b,c,d))
elif a+b-c-d==7:
print("{}+{}-{}-{}=7".format(a,b,c,d))
elif a-b+c-d==7:
print("{}-{}+{}-{}=7".format(a,b,c,d))
elif a-b-c+d==7:
print("{}-{}-{}+{}=7".format(a,b,c,d))
else:
print("{}-{}-{}-{}=7".format(a,b,c,d))
Als ich es vorher gelöst habe, habe ich viele Fehler gemacht, also habe ich mich beeilt, es zu lösen. Der Fehler zu dieser Zeit bestand darin, ** Indizierungsfehler ** und ** [] * n zu schreiben, um alle verschachtelten Arrays zum gleichen Objekt zu machen **. Ich konnte keinen Fehler machen, wenn ich beide bemerkte, also konnte ich sie dieses Mal reibungslos lösen. Da dieses Problem darin besteht, die minimale magische Kraft ** zu finden, wenn jede Zahl endgültig auf 1 geändert wird, bedeutet dies auch, dass Sie unterwegs einige Zahlen durchgehen können. Mit anderen Worten, ** es kann auf das Problem reduziert werden, den kürzesten Weg von einer bestimmten Zahl i (0 <= i <= 9) bis 1 zu finden, ** und es sollte zu der Idee führen, die WF-Methode leicht zu verwenden. Wenn Sie die WF-Methode verwenden, können Sie die Zahlen in jeder Zelle neu schreiben. Außerdem kann zu diesem Zeitpunkt jede Zelle ** unabhängig ** umgeschrieben werden, was als nützlich erachtet wird, um auf die Idee zu kommen, dass die WF-Methode zuerst verwendet werden sollte.
answerD.py
h,w=map(int,input().split())
#Initialisierung eines in WF verwendeten zweidimensionalen Arrays
WF=[list(map(int,input().split())) for i in range(10)]
#Gegebene Wand
a=[list(map(int,input().split())) for i in range(h)]
#WF-Methode
for k in range(10):
for i in range(10):
for j in range(10):
WF[i][j]=min(WF[i][j],WF[i][k]+WF[k][j])
#Schreiben Sie auf 1 um und geben Sie eine magische Kraft+Machen
ans=0
for i in range(h):
for j in range(w):
if a[i][j]!=-1:
ans+=WF[a[i][j]][1]
print(ans)
Recommended Posts