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...