Sous séquence contigues (Python) - Python - Programmation
Marsh Posté le 27-09-2012 à 21:28:24
J'ai cogiter un peu et je pensais commencer comme ça, pour l'utilisateur:
while True:
print("\n\nEntrez votre séquence séparée par une virgule\n" )
try:
lst = list(eval(input()))
except NameError:
print("Vous n'avez pas entré des nombres entiers" )
continue
except SyntaxError: # oui on peut prévoir un autre except, autant qu'on aura besoin
print("Vous n'avez pas respecté le format: des nombres séparés par des virgules!" )
continue
break
print(lst)
ensuite c'est de calculer ses sous-séquences et c'est ce qui me bloque. Personellement j'ai trouvé qu'il y avait en tout N + (N+1) + (N+2) ... +1 sous-liste. Soit N (N+1)/2. Est-ce que il y a moyen de jouer avec ça ?
Merci encore.
Marsh Posté le 01-10-2012 à 14:58:43
plard a écrit : ensuite c'est de calculer ses sous-séquences et c'est ce qui me bloque. |
C'est con, vu que c'est exactement le but de ton exercice
T'as songé à regarder du côté des combinaisons (mathématiques)? Après tout ton but est d'extraires le sous-ensembles des combinaisons continues de la liste (pas besoin des combinaisons avec des trous), de calculer leurs sommes et de regarder laquelle est la plus grande. Donc la première étape me semblerait être énumérer ces combinaisons
Accessoirement, aucune raison d'utiliser eval pour un truc pareil.
Marsh Posté le 26-09-2012 à 02:20:55
Bonjour,
je dois écrire un script Python qui, à l'aide des fonction Liste, boucle for et itérateur range(), et à partir d'une liste non trié d'entiers qu’un utilisateur du programme fournira, affiche la somme maximale d’une sous séquence contiguë présente dans la liste. De plus, je dois retourner les indices du début et de la fin de la sous séquence dans la liste. Les éléments de la liste peuvent être positifs ou négatifs. Par exemple si la liste contient les éléments suivants : 11, 13, -4, 3, -26, 7, -13, 25, -2, 17, 5, -8, 1
La sous séquence 3, -26, 7, -13, 25 a pour somme -4, par contre, la sous séquence de somme maximale est 25, -2, 17, 5 (de somme 45). Votre script devra afficher par conséquence : 45 7 10.
J'aimerais si possible que quelqu'un m'éclair sur ce problème car c'est la folie je ne sais pas par ou commencer.
Merci d'avance.