On a encore affaire à un tableau en deux dimensions, mais cette fois avec un nombre variable de colonnes sur chaque ligne. Ceci permet d'optimiser l'espace de stockage requis en tenant compte du fait que, pour un triangle de Pascal, certains éléments ne sont pas définis (exemple l'élément d'indices [0][2] n'existe pas). La matrice calculée a ici une forme triangulaire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import java.util.Scanner;
class Pascal {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int size = 0;
// On demande la taille
System.out.println("Taille du triangle de Pascal : ");
size = scanner.nextInt();
// Ici on déclare le tableau, mais on ne construit que la première
// dimension
int[][] triangle = new int[size][];
// On construit et initialise la 1ère ligne
triangle[0] = new int[1];
triangle[0][0] = 1;
for (int row = 1; row < size; row++) {
// Chaque ligne du triangle est un tableau à une dimension
// dont la taille est celle de la ligne precedente + 1:
// on construit ces lignes (new) au fur et à mesure que l'on
// progresse dans le tableau
triangle[row] = new int [triangle[row - 1].length + 1];
// Remplissage du tableau:
// les deux éléments aux deux extrémités des lignes valent 1.
// Les autres sont liés par la relation:
// triangle[row][j]= triangle[row-1][j-1] + triangle[row-1][j]
for (int col = 0; col <= row; col++) {
if ((col == 0) || (col == row)) {
triangle[row][col] = 1;
} else {
triangle[row][col] = triangle[row - 1][col - 1]
+ triangle[row - 1][col];
}
}
}
// Affichage du tableau
for (int row = 0; row < size; row++) {
for (int col = 0; col <= row; col++) {
System.out.print(triangle[row][col] + " ");
}
System.out.println();
}
scanner.close();
}
} |