1 clase Solución: 2 def __init__ (self): 3 # self.l = [] 4 self.count = 0 5 6 def marcha atrás (self, calificación, temp, idx, inc): 7 si inc == 0: # 递减 8 si len (temp) == 3 : 9 # self.l.append (temp [:]) 10 self.count + = 1 11 de retorno 12 lo demás : 13 para i en rango (idx, len (rating)): 14 Silen (temp) == 0 o calificación [i] <temp [-1 ]: 15 temp.append (valoración [i]) 16 otra cosa : 17 continúan 18 self.backTrack (valoración, temp, i + 1 , inc) 19 si len (temp)> 0: 20 temp.pop (-1 ) 21 otra cosa : # 递增 22 si len (temp) == 3 : 23 # self.l.append (temp [:]) 24 self.count + = 1 25 de retorno 26 otra cosa : 27 para i en rango (idx, Len (rating)): 28 si len (temp) == 0 o calificación [i]> temp [-1 ]: 29 temp.append (valoración [i]) 30 otra cosa : 31 continúan 32 self.backTrack (valoración, temp, i + 1 , inc) 33 si len (temp)> 0: 34 temp.pop (-1 ) 35 36 37 def numTeams (self, Puntuación: ' Lista [int] ' ) - > int: 38 self.backTrack (valoración, [], 0,0) 39 self.backTrack (valoración, [], 0,1 ) 40 # impresión (self.l) 41 de retorno self.count
Algoritmo de pensamiento: marcha atrás.
La parte posterior serie dos veces, una para encontrar triples decrecientes; mirada para otro incremento de triples.
consulta recursiva, para encontrar tres elementos calificados, se registra 1