Aller au contenu principal

Cours et TD 22/01

Quentin Fortier
Professeur d'informatique
  • Fin TD "Algorithmes probabilistes".
  • TD "Apprentissage" : exercice 1. Exercice 2 à préparer pour la semaine prochaine.
  • Cours "Jeux à deux joueurs". Finir exercice CCINP.

Compétition Kaggle : Survivants du Titanic

Quentin Fortier
Professeur d'informatique

Vous pouvez utiliser ce Codespace pour la compétition d'apprentissage automatique sur les survivants du Titanic. Voir la description dans le README. Le lien vers la compétition Kaggle vous a été envoyé par mail. La compétition est ouverte jusqu'au 22 février au soir.

TD 15/01

Quentin Fortier
Professeur d'informatique

TD "Algorithmes probabiliste", exercice 1. À préparer pour la semaine prochaine : exercice 2.

LeetCode 5

Quentin Fortier
Professeur d'informatique

Deux exercices LeetCode pour ces vacances.

Indice 1er exercice

Parcourir chaque indice du tableau en conservant la somme maximale se terminant à cet indice.

Indice 2ème exercice

Utiliser un algorithme par programmation dynamique en calculant b[i][j] qui vaut vrai si la sous-chaîne d'indice i à j est un palindrome.

Solution
int maxSubArray(int* nums, int numsSize) {
int maxi = nums[0], max_cur = nums[0];
for(int i = 1; i < numsSize; i++) {
// invariant : max_cur est la somme consécutive max qui se termine en i
max_cur = max_cur + nums[i];
if(max_cur < nums[i])
max_cur = nums[i];
if(max_cur > maxi)
maxi = max_cur;
}
return maxi;
}
Solution
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* subword(char* s, int i, int j) {
char* t = malloc(j - i + 2);
for(int k = i; k <= j; k++)
t[k - i] = s[k];
t[j - i + 1] = '\0';
return t;
}

char* longestPalindrome(char* s) {
int n = strlen(s);
bool** b = malloc(n*sizeof(bool*));
for(int i = 0; i < n; i++) {
b[i] = malloc(n*sizeof(bool));
for(int j = 0; j < n; j++) {
b[i][j] = true;
}
}

int imax = 0, kmax = 0;
for(int k = 1; k < n; k++)
for(int i = 0; i < n - k; i++) {
b[i][i + k] = s[i] == s[i + k] && b[i + 1][i + k - 1];
if(b[i][i + k]) {
kmax = k;
imax = i;
}
}
return subword(s, imax, imax + kmax);
}

TD 15/12

Quentin Fortier
Professeur d'informatique
  • Fin TD "Décidabilité et complexité".
  • En MPI* : TD "Algorithme d'approximation" exo 1.

À faire pendant les vacances :

  • DM CCP