(Python) Sous séquence contigues

Sous séquence contigues (Python) - Python - Programmation

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.

Reply

Marsh Posté le 26-09-2012 à 02:20:55   

Reply

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.

Reply

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.


Message édité par masklinn le 01-10-2012 à 15:03:43

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed