Optimiser F5 avec Kadane en conservant les égalités

This commit is contained in:
rabot
2026-10-21 11:13:19 +02:00
parent b59e9700c7
commit 285afd80a7
3 changed files with 73 additions and 10 deletions
+14 -10
View File
@@ -146,21 +146,25 @@ void total_par_jour(const Transaction *t, int n, long *totaux)
}
/* F5 : période de jours consécutifs dont la somme des soldes est maximale */
/* Précondition : nb_jours > 0. En cas d'égalité, garder le premier intervalle. */
long meilleure_periode(const long *totaux, int nb_jours, int *debut, int *fin)
{
long meilleur = totaux[0];
long somme = totaux[0];
int debut_courant = 0;
*debut = 0;
*fin = 0;
for (int i = 0; i < nb_jours; i++) {
for (int j = i; j < nb_jours; j++) {
long somme = 0;
for (int k = i; k <= j; k++)
somme += totaux[k];
if (somme > meilleur) {
meilleur = somme;
*debut = i;
*fin = j;
}
for (int j = 1; j < nb_jours; j++) {
if (somme < 0) {
somme = totaux[j];
debut_courant = j;
} else {
somme += totaux[j];
}
if (somme > meilleur) {
meilleur = somme;
*debut = debut_courant;
*fin = j;
}
}
return meilleur;