Tablice

Tablice dwuwymiarowe

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

Uwagi

Tablice dwuwymiarowe możemy utożsamiać z macierzami.

Macierze

Zadanie

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.

Macierz Prawa Dolna

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

Iloczyn Prawej Dolnej

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

Strona główna