C'est la deuxième question passée.
Ce n'était pas long hier soir, alors j'ai rempli un temps simple.
Pour trois consécutifs, il suffit de comparer deux fois deux consécutifs (si vous changez de méthode de comparaison et utilisez un opérateur ternaire, ce sera comme suit)
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")
Tournez simplement la boucle et pensez dans l'ordre de l'avant. Le second est le code le plus court
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)
J'ai écrit un code très long, mais au final il n'y a que 8 façons ...
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))
Quand je l'ai résolu auparavant, j'ai fait beaucoup d'erreurs, donc je me dépêchais de le résoudre. L'erreur à ce moment-là était ** erreur d'indexation ** et ** [] * n pour rendre tous les tableaux imbriqués le même objet **. Je ne pouvais pas me tromper si je les remarquais tous les deux, donc j'ai pu les résoudre en douceur cette fois. De plus, puisque ce problème est de trouver la puissance magique minimale ** lorsque chaque nombre est finalement changé en 1, cela signifie que vous pouvez passer par certains nombres en cours de route. En d'autres termes, ** cela peut se réduire au problème de trouver le chemin le plus court d'un certain nombre i (0 <= i <= 9) à 1, ** et cela devrait conduire à l'idée d'utiliser facilement la méthode WF. Si vous utilisez la méthode WF, vous pouvez réécrire les nombres dans chaque cellule. En outre, à ce stade, chaque cellule peut être réécrite ** indépendamment **, ce qui est considéré comme utile pour arriver à l'idée que la méthode WF doit être utilisée en premier.
answerD.py
h,w=map(int,input().split())
#Initialisation du tableau bidimensionnel utilisé dans WF
WF=[list(map(int,input().split())) for i in range(10)]
#Mur donné
a=[list(map(int,input().split())) for i in range(h)]
#Méthode WF
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])
#Réécrire à 1 et donner un pouvoir magique+Faire
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