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(); } } |