Deklaracja:
int[][] a = { {1,2,3}, {4,5,6}, {7,8,9} };
Deklaracja alternatywna:
int[][] a = new int[3][3]; a[0][0] = 1; a[0][1] = 2; a[0][2] = 3; a[1][0] = 4; a[1][1] = 5; a[1][2] = 6; a[2][0] = 7; a[2][1] = 8; a[2][2] = 9;
Ilustracja:
0 1 2
0 [-]-a[0]-->[1][2][3]
1 [-]-a[1]-->[4][5][6]
2 [-]-a[2]-->[7][8][9]
↑
a
Wyjaśnienia:
a[i][j] - wyraz tablicy dwuwymiarowej
i - wiersz
j - kolumna
a.length - liczba wierszy
a[0].length - liczba kolumn
a.length-1 - indeks ostatniego wiersza
a[0].length-1 - indeks ostatniej kolumny
Wybrane własności:
0 1 2 a[1] --> [4][5][6] a[1][2] == 6 true
Tablice dwuwymiarowe możemy utożsamiać z macierzami.
Napisz program o nazwie IloczynPrawejDolnej. Program powinien zawierać metodę iloczynPrawejDolnej
która dla dowolnej macierzy kwadratowej wyznacza iloczyn elementów w macierzy trójkątnej prawej/dolnej włącznie z niegłówną
przekątną. Wyznacz funkcję opisującą złożoność czasową metody iloczynPrawejDolnej oraz podaj rząd tej złożoności.
1. Wyprowadzenie dla macierzy [aij]3x3
a00 a01 a02 i = 0 j = 2 .. 2 a10 a11 a12 i = 1 j = 1 .. 2 a20 a21 a22 i = 2 j = 0 .. 2
Zależność:
i = 0 .. 2 2 - indeks ostatniego wiersza j = 2-i .. 2 2 - indeks ostatniej kolumny
Dla każdego ustalonego i z przedziału 0 .. 2 zmienna j przyjmuje kolejno wartości z przedziału 2-i .. 2
2. Uogólnienie dla macierzy [aij]NxN
Z: a.length = a[0].length = N
Zależność:
i = 0 .. a.length-1 a.length-1 - indeks ostatniego wiersza j = a[0].length-1-i .. a[0].length-1 a[0].length-1 - indeks ostatniej kolumny
Dla każdego ustalonego i z przedziału 0 .. a.length-1 zmienna j przyjmuje kolejno wartości z przedziału a[0].length-1-i .. a[0].length-1
/* IloczynPrawejDolnej.java */ public class IloczynPrawejDolnej { public static void main(String[] args) { int[][] a = {{1,2,3}, {4,5,6}, {7,8,9}}; System.out.println("iloczynPrawejDolnej = " + iloczynPrawejDolnej(a)); System.out.println("iloczynPrawejDolnej = " + 3*5*6*7*8*9); } static int iloczynPrawejDolnej(int[][] a) { int iloczyn = 1; for (int i = 0; i <= a.length - 1; i++) { for (int j = a[0].length - 1 - i; j <= a[0].length - 1; j++) { iloczyn = iloczyn * a[i][j]; } } return iloczyn; } }
iloczynPrawejDolnej = 45360 iloczynPrawejDolnej = 45360 Press any key to continue...